设计模式系列
文章平均质量分 65
Helen_Chen
这个作者很懒,什么都没留下…
展开
-
模式分类
从目的来看:创建型(Creational)模式:负责对象创建。结构型(Structural)模式:处理类与对象间的组合。行为型(Behavioral)模式:类与对象交互中的职责分配。从范围来看:类模式处理类与子类的静态关系。对象模式处理对象间的动态关系。转载 2007-03-19 16:04:00 · 737 阅读 · 0 评论 -
Singleton单件(创建型模式)
动机:在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性、以及良好的效率。意图:可以保证一个类有且只有一个实例,并提供一个访问它的全局访问点。单线程Singleton模式的几个要点l Singleton模式中的实例构造器可以设置为protected以允许子类派生。l Singleton模式一般不要支原创 2007-03-19 17:35:00 · 844 阅读 · 0 评论 -
Builder生成器(创建型模式)
l 假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。l 如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正…… 动机:在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组原创 2007-03-20 16:49:00 · 760 阅读 · 0 评论 -
Factory Method工厂方法(创建型模式)
从耦合关系谈起耦合关系直接决定着软件面对变化时的行为l 模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。l 模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。 动机:在软件系统中,经常面临着“某个对象”的创建工作;由于需求的变化,这个对象经常面临着剧烈的变化,但是它却拥有比较稳定的接原创 2007-03-21 10:02:00 · 766 阅读 · 0 评论 -
Prototype原型(创建型模式)
依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。动机:在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需要的变化,这些对象经常面临剧烈的变化,但是他们却拥有比较稳定一致的接口。如何应对这种变化?如何向“客户程序 (使用这些对象的程序) ”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?意图:使用原型实例指定创原创 2007-03-21 11:57:00 · 827 阅读 · 0 评论 -
有关创建性模式的讨论
l Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是new所带来的耦合关系。l Factory Method,Abstract Factory,Builder都需要一个额外的工厂类来负责实例化“易变对象”,而Prototype则是通过原型(一个特殊的工厂类)来克隆“易变对象”。l 如果遇到原创 2007-03-21 11:59:00 · 685 阅读 · 0 评论 -
Abstract Factory抽象工厂(创建型模式)
new的问题常规的对象创建方法://创建一个Road对象Road road = new Road(); new的问题:实现依赖,不能应对“具体实例化类型”的变化。解决思路:封装变化点——哪里变化,封装哪里。潜台词:如果没有变化,当然不需要额外的封装! 工厂模式的缘起l 变化点在“对象创建”,因此就封装“对象创建”;l原创 2007-03-20 12:00:00 · 694 阅读 · 0 评论 -
Bridge桥接(结构型模式)
抽象与实现抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 动机:事实上由于Tank类型的固有逻辑,使得Tank类型具有了两个变化的维度——一个变化的维度为“平台的变化”,一个变化的维度为“型号的变化”。如何应对这种“多维度的变化”?如何利用面向对象技术来使得Tank类型可以轻松地沿着“平台”和“型号”两个方向变化,而不引入额外的复杂度?意图:将抽象部分与实现部分分离原创 2007-03-23 09:30:00 · 952 阅读 · 0 评论