您的位置:首页 > 其它

设计模式之闲话一两句

2015-07-23 13:17 225 查看
工厂模式:一个工厂类,一个抽象产品类。多个具体的同类型的产品类。根据传入的参数名(类),返回相应的产品对象

抽象工厂:一个抽象工厂接口,一个抽象产品接口。多个具体的工厂类,多个不同类型的具体产品类。客户端直接调用相应的工厂类,返回相应的产品对象。

单例模式:设置private私有的构造函数。不管类(方法)被调用多少次,类只会对应一个对象,所以客户端使用的对象都是共享这一个对象。

多例模式:类被new多少次,就生成多少个对象。

模板模式:在抽象基类中的方法中定义算法的基本框架(定义类中其他方法的执行顺序),子类方法实现基类中的各个抽象方法。客户端生成子类对象,并调用基类的算法框架(一个方法)

建造者模式:指导类,抽象建造者接口,实现建造者类,产品类。产品类实现本身属性以及设置这些属性的接口方法。建造者调用产品类的各个方法,实现产品类的创建过程。指导类定义建造者类中各个方法的执行顺序。目的是控制同一个产品类的各个方法的执行顺序。

代理模式:代理类和被代理类继承同一个接口。将被代理类作为参数传入代理类,代理类封装被代理类的各个方法供客户端调用。被代理类对客户端是隐藏的。

原型模式:不用New,而是用类对象的clone方法拷贝出一个新对象。注意:拷贝的对象不会执行构造函数。

中介者模式:中介者类和其他多个类。定义一个对象,封装一系列多个对象的相互引用,使得对象间不需要显示的引用,从而使其耦合更加松散。让其尽量满足迪米特法则。

命令模式:包含:一个请求调用者,抽象命令,具体命令,接受者。是将一类对象的功能操作进行抽象,一般来说,这些对象有相同的方法,所以这类对象有着类似的操作,我们通过抽象,就可以定义出一个命令对象,通过这样的方式,用户程序在使用的时候,只与该命令对象打交道,而不用与一类对象打交道,降低了耦合性,提高了程序设计的灵活性。 命令模式适应于一组对象他们的操作形式非常的类似,这个时候我们可以把对象的行为进行抽象,抽象成命令对象,实现解耦。

责任链模式:包含:一个抽象的处理者(Ihandler),一个实际的处理者。是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

装饰者模式:包含:抽象类(接口),具体类,抽象装饰者(Decorator),具体装饰者。动态地给一个对象附加上更多的责任。用装饰者模式代替子类的继承,主要是为了避免子类继承太多,子类的规模太大。装饰者模式实际就是在代理模式的基础上增加了一些动态的装饰方法。

策略模式:包含:抽象策略,具体策略,封装类(context)。定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略类和简单工厂类比较:唯一不相似的地方是:工厂类最终返回的是一个类对象,策略模式是使用这个类,并且调用这个类的方法,不返回对象。策略模式和代理模式比较:代理模式的封装类唯一不同是:代理类中的封装类要和被代理类继承同一个上层抽象类,而策略不需要。

适配器模式:包含:目标类(接口),适配器,需要适配的类(需要转换的源类)。将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。

迭代器模式:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。个人感觉这个设计模式不是太实用,目前各个开发框架都有相应的迭代类或者封装好的类,比如ArrayList,直接实用就可以了,没必要自己去实现迭代。

组合模式(Composite):一个抽象父类,多个抽象子类(root根节点,leaf叶子节点)。将对象组合成属性结构以表示'部分-整体'的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。

观察者模式:有时被称作发布/订阅模式,包含:抽象的被观察者,具体被观察者,抽象观察者,观察者。观察者模式定义了一种一对多的依赖关系,(在被观察者中注入多个观察者)让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。一般的事件,委托都是这个模式。

外观模式:是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使用子系统更容易使用。个人感觉就是将一组关联方法的组合在一个类中,然后其他所有依赖这些关联方法的类都通过这个组合类(接口)去访问需要的方法。达到对子系统方法的控制(权限),隐藏的作用。

备忘录模式:包含:发起者,备忘录,备忘录管理者。在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样就可以将该对象恢复到原先保存的状态。就是把一个对象在每次状态改变后,在外部对象中保存多份,用于记录改变过程。

访问者模式:包含:抽象元素,具体元素,抽象观察者,具体观察者,元素结构角色(元素列表)。个人感觉是将元素和观察者相互注入,通过观察者去实现元素需要的一些特别的算法操作。

状态模式:包含:上下文Context,抽象状态,具体状态。主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。

解释器模式:

享元模式:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: