代码改变世界

随笔分类 -  重构与设计模式

观察者(Observer)模式

2015-05-03 23:42 by 假面Wilson, 201 阅读, 收藏, 编辑
摘要: 1. 概述 有时被称作发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。2. 解决的问题 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一... 阅读全文

Abstract Factory Pattern

2012-12-02 23:39 by 假面Wilson, 151 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,里面提到工厂模式,后来查看了园子里相关文章,发现这篇很详细,故转载。转自:最近在看《重构与模式》,里面提到工厂模式,后来查看了园子里相关文章,发现这篇很详细,故转载。转自:一、抽象工厂(Abstract Factory)模式抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。为了方便引进抽象工厂模式,引进一个新概念:产品族(Product Family)。所谓产品族,是指位于不同产品等级结构,功能相关联的产品组成的家族。如图:图中一共有四个产品族,分布于三个不同的产品等级结构中。只要指明一个产品所处的产品族以及它所属的等级结构,就可以唯一的确定这个产品。引 阅读全文

Simple Factory Pattern (简单工厂模式)

2012-12-02 23:36 by 假面Wilson, 201 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,里面提到工厂模式,后来查看了园子里相关文章,发现这篇很详细,故转载。转自:http://www.cnblogs.com/zhenyulu/articles/36462.aspx一、简单工厂(Simple Factory)模式Simple Factory模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。Simple Factory模式实际上不是GoF 23个设计模式中的一员。二、Simple Factory模式角色与结构:工厂类角色Creator (LightSimpleFactory):工厂类在客户端的直接控制下(Cr 阅读全文

Template Method

2012-12-02 23:07 by 假面Wilson, 234 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,里面提到Template Method(模板方法)。目的:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。结构图 : 示例:以访问数据库操作为例:publicabstractclassDataAccessObject{protectedstringconnectionString;protectedDataSetdataSet;publicvirtualvoidConnect(){connectionString="Server=localhost;UserId 阅读全文

构造函数链

2012-12-02 12:37 by 假面Wilson, 306 阅读, 收藏, 编辑
摘要: ►概述:把构造函数链接起来,从而获得最少的代码重复,编写一个全包含构造函数目的:类中的两个或者多个构造函数存在重复代码时,减少忘记更新其他构造函数而导致的错误。示例:publicclassA{privatestringa,b,c,d,e,f,g;publicA(stringa1,stringb1,stringc1,stringd1,stringe1,stringf1,stringg1){this.a=a1;this.b=b1;this.c=c1;this.d=d1;this.e=e1;this.f=f1;this.g=g1;}publicA(stringa):this(a,"&quo 阅读全文

Creation Method

2012-12-02 12:23 by 假面Wilson, 380 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,里面提到Creation Method。动机(1)构造函数无法有效和高效的表达意图。如果一个类里有多个构造函数,那么使用这个累的人只能从文档上才能知道哪个构造函数创建了什么对象,而Creation Method可针对创建对象的特性来命名函数的名称,提高了代码的可读性。(2)在添加构造函数时,会遇到签名与某个构造函数相同的情况,这样构造函数将无法添加。而Creation Method可任意命名,不存在方法签名的问题,当然Creation Method也可以重载。(3)一般来说,现在的开发环境没有自动提示函数无调用的功能,所以,如果系统中某个类的某个构造函数没有调用者,这是 阅读全文

Composed Method(组合方法)

2012-12-02 12:07 by 假面Wilson, 485 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,里面提到Composed Method(组合方法)。组合方法由一些命名良好的方法的调用组成,这些方法属于实现细节的同一个层面。通俗的理解就是压缩你的方法体,用一个个小方法来封装(代码层次的封装!封装无所不在阿!)。为啥我们需要这样一个实现呢?我个人体会,应该也是最重要的原因就是“降低理解代码的时间“。如果一个方法有着上百行的实现,这个方法理解起来,将是非常痛苦的,如n在加上些全局变量啥的就更加痛苦了!书中的例子:publicvoidadd(Objectelement){if(!readOnly){intnewSize=size+1;if(newSize>eleme 阅读全文

Factory Method模式

2012-11-29 17:39 by 假面Wilson, 234 阅读, 收藏, 编辑
摘要: 看到一篇简单易懂关于Factory方法模式的文章,转载过来留着备用!转自:http://www.cnblogs.com/feipeng/archive/2007/03/12/671486.html一、概述在软件系统中,经常面临着“某个对象”的创建工作,由于需求的变化,这个对象的具体实现经常面临着剧烈的变化,但是它却拥有比较稳定的接口。如何应对这种变化?提供一种封装机制来隔离出“这个易变对象”的变化,从而保持系统中“其它依赖该对象的对象”不随着需求的改变而改变?这就是要说的Factory Method模式了。二、意图定义一个用户创建对象的接口,让子类决定实例化哪一个类。Factory Metho 阅读全文

Command模式

2012-11-27 16:31 by 假面Wilson, 274 阅读, 收藏, 编辑
摘要: 最近在看《重构与模式》,发现写的不是很清晰,不知是否翻译的不够好。后来在园子里看到了好文,写的非常清晰。故转载:http://www.cnblogs.com/zhenyulu/articles/69858.html一、命令(Command)模式命令(Command)模式属于对象的行为模式【GOF95】。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开, 阅读全文

Null Object 模式

2012-11-26 17:27 by 假面Wilson, 419 阅读, 收藏, 编辑
摘要: NULL OBJECT看着这个名字应该有一个笼统的印象了。翻译成中文就是“空对象”。提供一个对象给指定的类型,用以代替这个对象为空的情况。 Null Object提供了“什么也不做”的行为,隐藏来自它的合作者的细节那在FrameWork中有这样的设计模式吗?答案是肯定的,比如:String.Empty,Decimal.Zero等以下是简单例子:publicinterfaceEmployee{publicvoidpay();publicbooleanisTimeToPay(DateTimepayDate);publicstaticfinalEmployeeNULL=newEmployee(){p 阅读全文
点击右上角即可分享
微信分享提示