设计模式
tiger_xn
这个作者很懒,什么都没留下…
展开
-
抽象工厂模式
抽象工厂模式:1、增加一个产品很容易,例如增加两个产品MeatVeteMammal和MeatVeteBird,再增加一个工厂MeatVeteFactory即可,在符合OCP原则,即开闭原则。2、增加一个产品等级困难,即在产品组,增加一类产品,需要在AnmialFactory中新增一个方法,需要修改与之相关的所有的工厂类。3、在横向扩展容易,纵向扩展困难。4、高内聚,低耦合。转载 2014-02-20 23:39:16 · 361 阅读 · 0 评论 -
单例模式
单例模式:1、构造函数私有2、获取实例方法getInstance3、为防止并发访问时获取的实例出错,类成员变量emperor在声明时直接new一个对象, getInstance方法为 public synchronized static Emperor getInstance(){return emperor; }转载 2014-02-18 22:24:19 · 331 阅读 · 0 评论 -
多例模式
多利模式:【Multition Pattern】1、一个有上限的多例类可以使用静态变量存储所有的实例。在数目多的时候就要使用静态聚集存储这些实例。2、有状态和没有状态的多例类:多例类对象的状态如果是可以在加载后改变的,那么这种多例对象叫做可变多例对象。反之则为不变多例对象。如果系统建立在诸如EJB和RMI等分散技术之上的,那么多例类有可能会出现数个实例,转载 2014-02-18 22:47:52 · 523 阅读 · 0 评论 -
工厂方法
工厂方法(Factory Method Pattern):转载 2014-02-19 22:00:22 · 351 阅读 · 0 评论 -
观察者模式
观察者模式(Observer Pattern)1、观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。2、在Java语言的java.util库里面,提供了一个Observable类以及一个Observer接口,构成Java语言对观察者模式的支持。33转载 2014-03-05 22:26:25 · 354 阅读 · 0 评论 -
访问者模式
访问者模式(Visitor Pattern):1、业务规则要求遍历多个不同的对象。这本身也是访问者模式出发点,迭代器模式只能访问同类或同接口的数据,而访问者模式是对迭代器模式的扩充,可以遍历不同的对象,然后执行不同的操作,也就是针对访问的对象不同,执行不同的操作。访问者模式还有一个用途,就是充当拦截器(Interceptor)角色。2、符合单一职责原则。3、访问者要访问转载 2014-03-12 22:17:28 · 407 阅读 · 0 评论 -
责任链模式
责任链模式(Chain Of Responsibility Pattern):1、使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求, 直到有一个对象处理他为止。2、责任链模式屏蔽了请求的处理过程,你发起一个请求到底是谁处理的,这个你不用关心,只要你把请抛给责任链的第一个处理者,最终转载 2014-03-06 22:41:47 · 392 阅读 · 0 评论 -
状态模式
状态模式(State Pattern):1、Allow an object to alter its behavior when its internal state changes. The object will appear to change its class.也就是说状态模式封装的非常好,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样。转载 2014-03-12 22:43:32 · 358 阅读 · 0 评论 -
中介者模式
中介者模式(Mediator Pattern):1、抽象中介者(Mediator)角色:抽象中介者角色定义统一的接口用于各同事角色之间的通信。 具体中介者(Concrete Mediator)角色:具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色。 同事(Colleague)角色:每一个同事角色都知道中介者角色,而且与其他的同事角色转载 2014-03-24 22:22:49 · 457 阅读 · 0 评论 -
策略模式
策略模式:优点:1、高内聚低耦合2、扩展性,也就是OCP原则3、策略类可以增加多个,只要修改Context.java就可以。转载 2014-02-18 21:04:52 · 298 阅读 · 0 评论 -
代理模式
代理模式:1、代理模式主要使用了Java的多态,2、干活的是被代理类(委托类),3、代理类主要是接活,你让我干活,好,我交给幕后的类去干。4、代理类与委托类同一个接口,大家知根知底,你能做啥,我能做啥都清楚的很。转载 2014-02-18 21:04:09 · 365 阅读 · 0 评论 -
适配器模式
适配器模式:类适配器模式:对象适配器模式:1、将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。优点:2、通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的。这样做更简单、更直接、更紧凑。3、复用了现存的类,解决了现存类和复用环境要求不一致的转载 2014-02-23 20:56:44 · 324 阅读 · 0 评论 -
模板方法模式
模板方法模式(Template Method Pattern):1、模板方法模式就是在模板方法中按照一个的规则和顺序调用基本方法,模板方法是通过汇总或排序基本方法而产生的结果集。转载 2014-02-23 22:03:58 · 332 阅读 · 0 评论 -
桥梁模式
桥梁模式(Bridge Pattern):1、桥梁模式的用意是“将抽象化与实现化脱耦,使得二者可以独立地变化”,这句话有三个关键词,也就是抽象化,实现化和脱耦。2、业务抽象角色引用业务实现角色或业务抽象角色的部分实现是由业务实现角色完成的。3、耦合,就是两个实体的行为的某种强关联,而将他们的强关联去掉,就是耦合的解脱,或称脱耦,在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,转载 2014-02-24 23:07:52 · 464 阅读 · 0 评论 -
建造者模式
建造者模式:1、建造者模式使用的场景,一是产品类非常的复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式是非常合适。2、在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离转载 2014-02-24 22:18:01 · 414 阅读 · 0 评论 -
命令模式
命令模式(Command Pattern):public interface Command { public void execute();}public class ConcreteCommand implements Command { private Receiver receiver = null; private String state;转载 2014-02-25 21:45:40 · 371 阅读 · 0 评论 -
装饰模式
装饰模式(Decorator Pattern):1、Decorator模式:动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。2、设计原则:a. 多用组合,少用继承。利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都会继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。b. 类应设计的对扩展开转载 2014-02-25 22:14:29 · 365 阅读 · 0 评论 -
迭代器模式
迭代器模式(Iterator Pattern): 迭代器模式遍历集合的成熟模式,迭代器模式的关键是将遍历集合的任务交给一个叫做迭代器的对象,它的工作时遍历并选择序列中的对象,而客户端程序员不必知道或关心该集合序列底层的结构。 迭代器模式的结构中包括四种角色。 一、集合:一个接口,规定了具体集合需要实现的操作。 二、具体集合:具体集合石实现了集合接转载 2014-02-26 23:25:44 · 395 阅读 · 0 评论 -
组合模式
组合模式(Composite Pattern):1、将对象组合成树形结构以表示‘部分-整体’的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。2、当发现需求中是体现部分与整体层次结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑组合模式了。转载 2014-02-27 23:34:52 · 316 阅读 · 0 评论 -
原型模式
原型模式(Prototype Pattern):1、这个模式的核心是一个clone方法,通过这个方法进行对象的拷贝,Java提供了一个Cloneable接口来标示这个对象是可拷贝的,这个接口只是一个标记作用,在JVM中具有这个标记的对象才有可能被拷贝,重写clone()方法。2、对象拷贝时,类的构造函数是不会被执行的。3、浅拷贝和深拷贝问题。内部的数组和引用对象不拷贝,其他的原转载 2014-03-24 21:52:14 · 406 阅读 · 0 评论