11 2008 档案

摘要:作用:假设我们有一个使用了八个对象的程序,由于需求变更,其中三个对象需要另外一个属性。读者可以为这三个对象创建一个派生类,在多数情况下,这是一个完全可以接受的方案。然而,如果这三个对象中的每个对象都要求有不同的属性,这就意味着要创建三个派生类。更进一步,如果其中一个类具有其他两个类中的属性,可能就要创建更复杂的类,这既容易造成混乱也没有必要————装饰者模式给我们提供了这样一个方法:改变单个对象的... 阅读全文
posted @ 2008-11-25 14:48 MichaelChen 阅读(364) 评论(0) 推荐(0)
摘要:作用:使组件既可以是单个对象,也可以是对象的组合。比如:算术表达式包括操作数、操作符和另一个操作数。操作数可以是数字,也可以是另一个表达式。这样,2+3和(2+3)+(4*6)都是合法的表达式;再比如:常用的树控件,其对象可以是一个节点,也可以是一个叶子。对一棵树来说,对其添加节点还是添加叶子是一样的。 实现要点:ArrayList , 众所周知.net提供的ArrayList极大地方便了你组合对... 阅读全文
posted @ 2008-11-25 10:51 MichaelChen 阅读(304) 评论(0) 推荐(0)
摘要:作用:将抽象部分与它的实现部分分离,使它们都可以独立地变化。实现要点:分离和聚合。将一个对象分解成两个部分。它们之间用聚合来保持关系。UML: 代码:这里的例子是将电器的开关功能与其分离,以适应不同变化 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--... 阅读全文
posted @ 2008-11-19 10:41 MichaelChen 阅读(345) 评论(0) 推荐(0)
摘要:适配器模式属于结构型模式,结构型模式描述的是如何组合类或者对象以获得更大的结构。 适配器模式: 作用:将一个类或者程序的接口转换为另一个接口,以适应客户类的需求 实现要点:通过继承或者对象组合的方法实现,分别称为类适配器和对象适配器。又是一个我们平时经常不知不觉使用的设计模式。 代码: Code highlighting produced by Actipro CodeHighlighter (... 阅读全文
posted @ 2008-11-17 18:01 MichaelChen 阅读(296) 评论(0) 推荐(0)
摘要:作用:创建新对象时不需要重新定义类,直接从原型类里拷贝创建新对象实现要点:克隆。(c#的克隆分为浅表拷贝和深度拷贝,详情参见msdn)UML: 代码:(注:这段代码来自TerryLee ,http://www.cnblogs.com/Terrylee/ ,觉得很好,顺便复习了索引器,就照搬了。) Code highlighting produced by Actipro CodeHighli... 阅读全文
posted @ 2008-11-13 10:44 MichaelChen 阅读(298) 评论(0) 推荐(0)
摘要:作用:一个类可以有不同的部件供选择,这些部件变化频繁,但是有稳定的算法来组合它们。实现要点:关注对象的构建过程,也就是上面说的“算法”,一步一步生成你需要的复杂对象。UML: 代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> class D... 阅读全文
posted @ 2008-11-10 17:19 MichaelChen 阅读(331) 评论(0) 推荐(0)
摘要:一.简单工厂(Simple Factory) GOF没有把简单工厂作为设计模式之一列出。但是为了学习后面的两种工厂模式,还是先来了解一下简单工厂。 作用:专门由一个类来决定实例化哪个产品类实现要点:可能很多人平时都不知不觉地使用了简单工厂。简单工厂就是把决定实例化哪个类的方法放到一个单独的类(所谓的工厂类)里。UML: 代码: Code highlighting produced by Acti... 阅读全文
posted @ 2008-11-06 14:20 MichaelChen 阅读(1364) 评论(5) 推荐(0)
摘要:作用:保证一个类只能有一个实例。并提供一个访问它的全局访问点。属于创建型模式。实现要点:一.使用一个静态成员变量作为“全局”实例,这样就确保了唯一性 二.使用静态的成员函数instance()替代new来获取该类的实例,这样就提供了全局的访问点 三.构造函数设为private,使调用者不能用new来创建此类的实例代码:两种方法实现单件模式,一种是... 阅读全文
posted @ 2008-11-03 15:54 MichaelChen 阅读(462) 评论(1) 推荐(0)