计算机-设计模式
文章平均质量分 71
nirvana_li
这个作者很懒,什么都没留下…
展开
-
开闭原则(Open-Closed Principle)与Strategy模式
"开闭原则":"开闭原则"是一种与类设计相关的原则."软件实体(类,模块,函数等)应该对扩展开放,而对修改关闭[Martin,p99]"."开闭原则"有两个重要的方面:1. "对扩展开放": 当应用程序的需求发生改变,可以通过扩展模块的行为来应对.2. "对修改关闭": 扩展模块的行为并不会导致模块的源代码或它的二进制代码的修改.在应用程序中有两种设计模式可以帮助实现"开闭原则": Templat原创 2006-09-01 20:38:00 · 1606 阅读 · 0 评论 -
面向对象设计三大原则(封装变化点,对接口进行编程,多使用组合而不是继承)
该三大原则应该算是OO的基础,很多OO设计原则和设计模式都是在此三大原则上面衍生发展而来。所以对于学习设计模式的人,了解这三大原则显然是非常必要的。 1.面向对象设计的第一原则:封装变化点。隔离变化点的好处在于,将系统中经常变化的部分和稳定的部分隔离,有助于增加复用性,并降低系统耦合度。很多设计模式的意图中都明显地指出了其对问题的解决方案,学习设计模式的要点是发现其解决方案中封装的变化点。原创 2007-07-29 23:51:00 · 6458 阅读 · 0 评论 -
设计模式(六):Prototype模式
Prototype模式被翻译为原型模式,这里我们看到了创建对象的另外一种方式。一般在程序中我们可以使用的对象创建方法有:1. 使用new关键字创建对象,这是最最普通的一种。2. 使用对象序列化(Serialize)创建对象3. 使用反射机制(Reflection)动态创建对象4. 使用clone(克隆)方式创建对象这里的Prototype模式用的就是第4种方法,它通过复制一个已经存在的对象实例来原创 2007-05-02 17:57:00 · 1172 阅读 · 0 评论 -
设计模式(五):Builder模式
Builder模式主要解决的问题是:分离复杂对象的构建过程(construction)和表示(representation),以使得相同的构建过程能够产生不同的表示。通常Builder模式会和Composite模式一起使用。图中:Builder是创建产品的抽象接口ConcreteBuilder是Builder的具体实现,由它负责构建或者组装产品。Director的职责就是控制对象创建过程,它接受一原创 2007-05-02 16:40:00 · 1344 阅读 · 1 评论 -
设计模式(三):Factory Method模式
在GOF中关于Factory Method模式的定义如下:“Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.” 定义创建原创 2007-04-19 14:06:00 · 1269 阅读 · 2 评论 -
设计模式(二):MonoState模式
MonoState模式:先说说MonoState这个单词的意思,设计模式的名字都是很有意思的,因为为了方便交流、记忆,所以设计模式的命名都对该模式的意图进行了表述。Mono是一个词根,英语中Mono,Mon都表示的是1的意思,state意思为"状态"。MonoState的意思就是"单一的状态"。MonoState模式同Singleton一样也是一种保证单一性的模式。但是它和Singleto原创 2006-12-19 16:42:00 · 7514 阅读 · 1 评论 -
设计模式(一):Singleton模式
Singleton模式: 意图:保证类有且仅有一个实例对象,并提供对它的全局访问点。 实现:1. 为了实现以上的意图,首先要绕过常规的实例化对象的手法,即通过new直接实例化对象。因为new的方式在“特殊”时候存在两个缺点:第一个很明显,直接new的方式具有较高的耦合性,缺乏相应的灵活度;第二个缺点,类实例化的主动权被客户端程序掌握,而不为类自身所能控制。也就是说,要确保一个原创 2006-12-18 14:11:00 · 1657 阅读 · 1 评论 -
近期关于“软件架构”的一个看点
Peter Eeles准备写一系列的关于软件架构的文章,这个消息我是从www.artima.com上看来的。因为Bill Venners写了一篇文章叫做Software Architecture is Leadership,地址:http://www.artima.com/weblogs/viewpost.jsp?thread=154933里面提到他对于Peter Eeles写的What is a原创 2006-06-26 21:16:00 · 1382 阅读 · 0 评论 -
OOD原则:SRP、OCP以及LSP
单一职责原则(SRP : Single Response Principle)就一个类而言,应该仅有一个引起它变化的原因。在这里,职责的定义是: “变化的原因”。对于何时遵循SRP有以下的考虑:1.如果应用程序的变化会影响到类中某一种职责,那么就应该将它与另一种职责分开,这样做可以避免客户应用程序和类中的这两职责耦合在一起。2.如果应用程序的变化总是会导致两个职责同时变化,那么就不必要分离它们原创 2006-05-22 17:43:00 · 2080 阅读 · 0 评论 -
静态工厂方法
它只是一个简单的静态方法,返回类的一个实例.1. 与构造函数不同,静态工厂方法具有名字.选用适当名字的静态工厂方法可以使一个类更易于使用,并且相应的客户代码更易于阅读.2. 与构造函数不同,不要求非得创建一个新的对象.这使得一些非可变类可以使用一个预先构造好的实例,或者把已经构造好的实例缓冲起来.同时,静态工厂方法可以为重复的调用返回同一个对象,这也可以被用来控制"在某一时刻哪些实例应该存在."原创 2006-09-05 11:29:00 · 2237 阅读 · 0 评论 -
在RMI中应用Factory模式
什么是"factory"?为什么要使用它?在这里,factory是指实现了factory设计模式的软件逻辑.通常在需要使用一个对象来控制其它对象的创建或存取过程的时候将非常有用.在RMI中使用factory,能够降低在RMI注册表中注册对象的数量.真实世界的factory示例:银行当你前往银行往自己的账户存钱的时候,你并不会径直走到金库,然后打开写有你名字的抽屉,然后把钱放进去,再关上抽屉离开.仔翻译 2006-09-04 21:23:00 · 1108 阅读 · 0 评论 -
设计模式(四):Abstract Factory模式
Abstract Factory模式是对Factory Method模式的进一步演变。Factory Method所要解决的是new的问题。而Abstract Factory模式则试图为创建一系列产品提供统一的接口。当需要创建某一系列产品的时候,可以从抽象工厂中选择相应的系列创建一个具体的工厂类。OK,我们现在就来假设一个场景,比如需要一个GUI(图形用户界面),它既可以显示Windows风格的按原创 2007-05-02 14:14:00 · 1207 阅读 · 0 评论