摘要:动机:如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦?意图:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。Facade模式的几个要点1、从客户程序的角度来看,Facade模式不仅简化了组件系统的接口,同时对于组件内部与外部客户程序来说,从某种程序上也达到了一种“解耦&...
阅读全文
摘要:动机:过度的使用了继承扩展对象的功能,由于继承为类型引入的静态特质,使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多),各种子类的组合(扩展功能的组合)会导致更多子类的膨胀(多继承)。如何使“对象功能的扩展”能够根据需要来动态的实现?同时避免“扩展功能的增多”带来的子类膨胀问题?从而使得任何“功能扩展变化”所导致...
阅读全文
摘要:动机:客户代码过多地依赖于对象容器复杂的内部实现结构,对象容器内部实现结构(而非抽象接口)的变化将引起客户端代码的频繁变化,带来了代码的维护性、扩展性等弊端。如何将“客户端代码与复杂的对象容器结构”解耦?让对象容器自己来实现自身的复杂结构,从而使得客户代码就像处理简单对象一样来处理复杂的对象容器?意图:将对象组合成树形结构以表示“部分--整体”的层次...
阅读全文
摘要:意图:将抽象部分与实现部分分离(将一个事物中多个维度的变化分离),使它们都可以独立地变化。要点:1、Bridge模式使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象(TANK的型号)和实现(不同的平台)可以沿着各自的维度来变化。2、所谓抽象和实现沿着各自纬度的变化,即“子类化”它们(比如不同的TANK型号子类,和不同的平台子类)。...
阅读全文
摘要:动机在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。意图将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。要点1、Adapter模式主要应用于“希望复用一些现存的类,但是接口又与复用环境要求不一致的情况”...
阅读全文
摘要:1、Singleton模式解决的是实体对象个数的问题。除了Singleton之外,其他创建型模式解决的都是NEW所带来的耦合关系。2、Factory Method、Abstract Factory、Builder都需要一个额外的工厂类来负责实例化“易变对象”,而Prototype则是通过原型(一个特殊的工厂类)来吉隆“易变对象”。3、如果遇到R...
阅读全文
摘要:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。ProtoType 原形模式的几个要点:1、ProtoType模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有“稳定的接口”。2、ProtoType模式对于“如何创建易变类的实体对象”采用“原型吉隆R...
阅读全文
摘要:定义一个用于创建对象的接口,让子类决定实例化哪能一个类。Factory Method使得一个类的实例化延迟到子类。Factory Method 模式的几个要点1、Factory Method 模式主要用于隔离类对象的使用都和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。2、Factory Method 模式通过面向对象的手法,将所要创建的具体对象工作延迟到子类,从...
阅读全文
摘要:将一个复杂对象的构建与其表示相分离,使得“同样的构建过程”可以创建“不同的表示”。Builder 模式的几个要点1、Builder模式主要用于“分步骤构建一个复杂的对象”。在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。2、变化点在哪点,封装哪能里----Builer模式主要在于应对...
阅读全文
摘要:提供一个接口,让该接口负责创建一系列“相关或都相互依赖的对象”,无需指定它们具体的类。1、如果没有应对“多系列对象构建”的需求变化,则没有必要使用Abstract Factory模式,这时候使用简单静态工厂完全可以。2、“系列对象”指的是这些对象之间有相互依赖、或作用的关系,例如游戏开发场景中的“道路”...
阅读全文
摘要:保证一个类仅有一个实例,并提供一个该实例的全局访问点。//不能完全支持多线程public class Singleton{private static Singleton singleton;int x;private Singleton(int x){this.x = x;}public static Singleton GetSingleton(int x){if(singleton == n...
阅读全文
摘要:最近开始听李建忠的《C#设计模式》讲座;每天一讲,希望能坚持的学习下去;以下记录的都是在学习的过程中的一些笔记,以后对模式逐步深入学习后再填充一些内容;面向对象三大机制1、封闭:隐藏内部实现2、继承:复用现有代码3、多态:改写对象行为关闭修改,开放扩展找到稳定点与变化点从原则到设计模式1、针对接口编程,而不是针对实现编程。2、优先使用对象组合,而不是类继承。3、封装变化点。
阅读全文