正文内容加载中...
posted @ 2010-03-21 23:31 binfen 阅读 (1563) 评论 (0) 编辑
摘要:享元模式以共享的方式高效地支持大量的细粒度对象,说的再具体一些是将所有具有相同状态的对象指向同一个引用,从而解决了系统在创建大量对象时所带来的内存压力。享元模式应用较少,这里举一个森林和树木的例子来说明这个模式的应用。一片森林中有成千上万棵树木,如果每棵树都创建一个对象,那么内存中的对象数量相当庞大,更何况我们现实世界中还有成千上万个森林。[代码] 阅读全文
posted @ 2009-07-26 17:24 binfen 阅读 (465) 评论 (0) 编辑
摘要:外观模式在生活中的例子处处都在,代码中也处处在用。它将自己最简洁的面貌展示给客户程序调用,有点金玉其外,“复杂”其中的意思。下面用汽车启动为例,当我们扣动车钥匙发动车时,汽车内部进行了一系列的操作来发动引擎。[代码] 阅读全文
posted @ 2009-07-26 15:11 binfen 阅读 (156) 评论 (0) 编辑
摘要:装饰模式通过采用组合,而非继承的手法,实现了在运行时动态地扩展对象功能的能力。下例通过饮料店中饮料和调料的关系模拟了装饰模式的用法,其中结构图与类对应关系是:Beverage = ComponentEspresso(HouseBlend) = ConcreteComponentCondimentDecorator = DecoratorSugar(Milk/Mocha) = ConcreteDec... 阅读全文
posted @ 2009-07-26 12:02 binfen 阅读 (217) 评论 (3) 编辑
摘要:组合模式主要处理的是客户在使用组合对象时对其结构的依赖。组合对象内部解决自身的复杂结构,使客户代码就像使用简单对象一样使用组合对象。组合模式又分为安全式的组合模式和透明式的组合模式。安全式的组合模式要求管理聚集的方法只出现在组合对象中,而不出现在简单对象中。透明式的组合模式要求所有的对象,不论组合对象还是简单对象,均符合一个固定的接口。下例中模拟ASP.NET中的button和panel控件,使用... 阅读全文
posted @ 2009-07-20 23:02 binfen 阅读 (174) 评论 (0) 编辑
摘要:适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,现实中适配器的例子有很多,这种模式很好理解。值得注意的是适配器模式总是在系统扩展时使用,如果前期设计时能够预见到这些变化,可以用其他的模式(如桥接模式)避免。下例以一个Arraylist实现栈结构来模拟适配器模式(严格的说是对象适配器模式)的使用场景,其中IAdapter = TargetStackAdapter = Adapte... 阅读全文
posted @ 2009-07-19 21:29 binfen 阅读 (147) 评论 (0) 编辑
摘要:桥接模式是一种结构型模式(structural pattern)用于解决系统设计中两个或多个维度的变化,从而实现各自维度的独立扩展,而不影响到使用客户下面用一个坦克游戏的示例演示了桥接模式的使用场景(这款游戏前期准备在window、linux上运营,以后可能会在手机、苹果机等等运行)示例中的类型与结构图中的对应关系TankGameApp = ClientTank = AbstractionTank... 阅读全文
posted @ 2009-07-19 18:53 binfen 阅读 (164) 评论 (0) 编辑
摘要:原型模式,使我们可以灵活地动态创建拥有某些稳定接口的“易变”对象。原型模式中涉及到了深拷贝(deep copy)的概念,所谓深拷贝就是对使用了引用类型的类对象的完整拷贝,如果拷贝的类中没有用到引用类型,则可以使用object自带的MemberWiseClone()方法实现拷贝。下面的例子使用了原型模式实现匹萨店的原料生成,结构图与实现代码中的对应关系如下Ingredient... 阅读全文
posted @ 2009-07-17 23:01 binfen 阅读 (186) 评论 (0) 编辑
摘要:建造者模式(Builder Pattern)是一种创建型模式(Creational Pattern)。主要用于一个“复杂对象”的创建工作,通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。建造者模式同抽象工厂模式有一定的相似之处,抽象工厂模式主要解决的是需求的变化引起的“一系... 阅读全文
posted @ 2009-07-14 23:55 binfen 阅读 (364) 评论 (0) 编辑
摘要:抽象工厂模式(Abstract Factory Pattern)是工厂方法模式(Factory Method Pattern)进化出的模式,在系统中用于完成“一系列相互依赖的对象”的创建工作,同时由于需求的变化,往往存在着更多系列对象的创建工作。下面实现该模式的代码,仍然以匹萨快餐店为例,在工厂方法模式的示例中,匹萨店有了许多分店,现在匹萨店的老板要考虑各分店的匹萨原料来源... 阅读全文
posted @ 2009-07-12 23:16 binfen 阅读 (171) 评论 (0) 编辑