代码改变世界

Abstract Factory Pattern

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

Simple Factory Pattern (简单工厂模式)

2012-12-02 23:36 by 假面Wilson, 198 阅读, 0 推荐, 收藏, 编辑
摘要:最近在看《重构与模式》,里面提到工厂模式,后来查看了园子里相关文章,发现这篇很详细,故转载。转自: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, 230 阅读, 0 推荐, 收藏, 编辑
摘要:最近在看《重构与模式》,里面提到Template Method(模板方法)。目的:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。结构图 : 示例:以访问数据库操作为例:publicabstractclassDataAccessObject{protectedstringconnectionString;protectedDataSetdataSet;publicvirtualvoidConnect(){connectionString="Server=localhost;UserId 阅读全文

构造函数链

2012-12-02 12:37 by 假面Wilson, 297 阅读, 0 推荐, 收藏, 编辑
摘要:►概述:把构造函数链接起来,从而获得最少的代码重复,编写一个全包含构造函数目的:类中的两个或者多个构造函数存在重复代码时,减少忘记更新其他构造函数而导致的错误。示例: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, 372 阅读, 0 推荐, 收藏, 编辑
摘要:最近在看《重构与模式》,里面提到Creation Method。动机(1)构造函数无法有效和高效的表达意图。如果一个类里有多个构造函数,那么使用这个累的人只能从文档上才能知道哪个构造函数创建了什么对象,而Creation Method可针对创建对象的特性来命名函数的名称,提高了代码的可读性。(2)在添加构造函数时,会遇到签名与某个构造函数相同的情况,这样构造函数将无法添加。而Creation Method可任意命名,不存在方法签名的问题,当然Creation Method也可以重载。(3)一般来说,现在的开发环境没有自动提示函数无调用的功能,所以,如果系统中某个类的某个构造函数没有调用者,这是 阅读全文

Composed Method(组合方法)

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

Equals和GetHashcode

2012-11-29 23:23 by 假面Wilson, 941 阅读, 0 推荐, 收藏, 编辑
摘要:一.两个逻辑上相等的实例对象。两个对象相等,除了指两个不同变量引用了同一个对象外,更多的是指逻辑上的相等。什么是逻辑上相等呢?就是在一定的前提上,这两个对象是相等的。比如说某男生叫刘益红,然后也有另外一个女生叫刘益红,虽然这两个人身高,爱好,甚至性别上都不相同,但是从名字上来说,两者是相同的。Equals方法通常指的就是逻辑上相等。二.Object的GetHashcode方法。计算Hashcode的算法中,应该至少包含一个实例字段。Object中由于没有有意义的实例字段,也对其派生类型的字段一无所知,因此就没有逻辑相等这一概念。所以默认情况下Object的GetHashcode方法的返回值,应 阅读全文

领域驱动设计模型和Smark UI

2012-11-29 23:05 by 假面Wilson, 1132 阅读, 1 推荐, 收藏, 编辑
摘要:最近在看ERIC Evans的《领域驱动设计》 ,里面提到了被称为反模式的Smart UI.觉得很有启发,摘要下来和大家分享。在面向对象的应用程序中,分层架构似乎是一个广为接受的模式。这种将UI和领域对象隔离开来的做法,虽然有很多人尝试去做,但最后坚持下来的却极少。为什么在经过尝试后,分层架构在实践中被否定了呢?SMART UI架构将领域知识和UI层混在一起。相对于分层架构而言,SMART UI架构简单得多。就是这个简单的SMART UI架构在时间中常常击败分层架构。有很多软件采用了SMART UI这种架构,他们也应该继续采用这种架构。但是我们必须要明白,SMART UI架构和领域驱动之间的矛 阅读全文

Factory Method模式

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

Command模式

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