我们在开发asp.net时,经常有使用if...else...或者是使用switch来进行多个条件判断。如下面这篇《用户控件(UserControl) 使用事件 Ver2http://www.cnblogs.com/insus/archive/2011/11/18/2253605.html,就是一段代码:

其实按上面的写法一点问题都没有,但是我们在审检代码看到这段代码时似乎要花点时间阅读,用意也不够明朗,藕合性也高。

建议把每个case块写成一个独立的方法。然后再调用它,目的是为最小化方法。

这样子,程序就可以改为:

修改到这里,我们需要复习一下设计模式的中介者(Mediator)模式,更多实例可参考《设计模式--中介(Mediator)模式http://www.cnblogs.com/insus/p/4134383.html 和《开发(ASP.NET程序)把写代码写至最有面向对象味道http://www.cnblogs.com/insus/p/4139346.html 。意思就是说,当遇上有多个if或是switch时,我们是可以使用中介者设计模式来解决,说白了就是替换。

下面我们创建一个中介者:

写好了,我们就可以重构switch程序了:

实时执行演示,得到的结果与原来一模一样:

本篇有告诉我们,程序不是一次写好,而是经过重构才会写得完善,房子建好之后只能是毛坯房,是需要装修,Insus.NET对重构的理解,就是对原本质没有太大改变时,去做一些变动,适合舒适。重构的同时,往往会带有设计模式的理念进行。

本演示源程序可从下面链接下载:
http://download.cnblogs.com/insus/Refactoring/fact_switch_mediator_pattern.rar

重构if...else...或者switch程序块的更多相关文章

  1. 重构if...else...或者switch程序块 为 中介者(Mediator)模式.的思考

    http://www.cnblogs.com/insus/p/4142264.html 重构if...else...或者switch程序块 为 中介者(Mediator)模式.的思考 首先普世的编程架 ...

  2. 重构--去除丑陋的switch语句

    最近几天,在进行重构的时候,遇到了一个极其丑陋的代码(自己写的 /捂脸  当时时间紧,于是....),今天去重构的时候无论如何也想不出方法,去除这个丑陋的switch语句 ,于是写篇博客,让自己记住这 ...

  3. C#: switch语句的重构『网摘』

    http://bj007.blog.51cto.com/1701577/345100/ switch语句是我们日常工作中最常见也是争论最多的(goto被忽视的前提下).在重构中也把switch语句看成 ...

  4. 设计模式--简单工厂(Factory)模式

    温故而知新,看了以前写的博文<Asp.net读取Excel文件 2>http://www.cnblogs.com/insus/archive/2011/05/05/2037808.html ...

  5. 深入浅析JAVA注解

    注解,相信大家都会知道,像@requestMapping,@Resource,@Controller等等的一些注解,大家都用过,那么,他的工具类你用过吗?下面就和大家一起来分享一下注解工具类. 注解的 ...

  6. @SuppressWarnings("finally")

    @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默.   批注允许您选择性地取消特定代码段(即,类或方法)中的警告.其中的想法是当您看到 ...

  7. 深入理解Java:注解(Annotation)基本概念

    转自:http://www.cnblogs.com/peida/archive/2013/04/23/3036035.html 竹子-博客(.NET/Java/Linux/架构/管理/敏捷) 什么是注 ...

  8. Java Annotation认知(包括框架图、详细介绍、示例说明)

    摘要 Java Annotation是JDK5.0引入的一种注释机制. 网上很多关于Java Annotation的文章,看得人眼花缭乱.Java Annotation本来很简单的,结果说的人没说清楚 ...

  9. @suppressWarnings解释

    J2SE 提供的最后一个批注是 @SuppressWarnings.该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默. 一点背景:J2SE 5.0 为 Java 语言增加 ...

随机推荐

  1. A CIRCULAR PROGRESSBAR STYLE USING AN ATTACHED VIEWMODEL

    This blog post describes how to re-template the Silverlight ProgressBar control to render a circular ...

  2. Windows 2008 利用Filezilla server搭建FTP

    Windows 2008 利用Filezilla server搭建FTP, 安装后总是提示Error Connection To Server Lost , 后来,无意中先安装了IIS,再安装file ...

  3. 在Windows 2008/2008 R2 上配置IIS 7.0/7.5 故障转移集群

    本文主要是从:http://support.microsoft.com/kb/970759/zh-cn,直接转载,稍作修改裁剪而来,其中红色粗体部分,是我特别要说明的 若要配置 IIS 7.0 和 7 ...

  4. 【css】a:hover 设置上下边框在 ie6 和 ie7 下失效

    前段时间在写样式的时候发现了这个问题,虽然当时就解决了这个 bug 不过还是记录下,以免再次出现这样的问题. demo 代码: <!doctype html> <html lang= ...

  5. Mac 上面使用SVN的攻略

    参考网站: http://blog.csdn.net/q199109106q/article/details/8655204 SVN命令集: http://www.blogjava.net/jasmi ...

  6. 关于typedef的使用方法

    在计算机编程语言中用来为复杂的声明定义简单的别名.与宏定义有些差异.它本身是一种存储类的keyword,与auto.extern.mutable.static.register等keyword不能出如 ...

  7. MariaDB Galera Cluster 10.1 只支持 LINUX ?!

    MariaDB Galera Cluster  (MariaDB 10.1) 当前只支持:LINUX ! 参考: https://mariadb.com/kb/en/mariadb/getting-s ...

  8. 在Linux 应用层 基于i2c-dev.h 实现i2c读写

    /* i2c-dev.h - i2c-bus driver, char device interface Copyright (C) 1995-97 Simon G. Vogl Copyright ( ...

  9. spring中bean配置和bean注入

    1 bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean ...

  10. 图文详解远程部署ASP.NET MVC 5项目

    话外篇: 由于感觉自己的机器比较慢,配置不好,所以最近想把之前的项目部署到实验室的服务器上,但是由于常不在实验室,所以在想能不能远程部署.因此今天专门研究了一下具体的过程,下面和大家分享一下.本人新手 ...