您的位置:首页 > 编程语言 > Java开发

设计模式笔记

2015-09-09 21:51 204 查看
一、创建模式
1.工厂模式
    1.1普通工厂模式
       
建一个工厂类,对实现了统一接口的类进行实例的创建(一个produce函数,可通过字符串选择需要创建的实例)。
    1.2多个工厂模式
       
普通工厂模式中,如果传递的字符串出错,则不能正确创建对象。而多个工厂模式提供多个工厂方法,分别创建对象(多个produce函数)。
    1.3静态工厂模式
       
工厂模式的方法置为静态,直接调用。
   
工厂模式适合:大量有共同接口的产品需要创建。
2.抽象工厂模式
   
工厂模式的一个问题是,类的创建依赖工厂类。抽象工厂模式可以创建多个工厂类(抽象工厂即只含produce函数的工厂接口)。
3.单例模式
4.建造者模式
   
工厂类模式提供的是创建单个类的模式,而建造者用来创建复合对象。其实建造者模式就是抽象共创模式和最后Test的结合。
5.原型模式
   
深复制、浅复制。
 
二、结构型模式
6.适配器模式
   
将某个类的接口转换成另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。
    6.1类的适配器模式
       
通过Adapter类,将Source的功能扩展到Targetable里。
    6.2对象的适配器模式
       
基本思路和类的适配器模式相同,只是不继承Source类,而是持有Source类的实例,以解决兼容性的问题。
    6.3接口的适配器模式
        
借助于一个实现接口的抽象类,继承该抽象类时就只需要重写需要的方法。
7.装饰器模式的应用场景:
(1)需要扩展一个类的功能。
(2)动态地为一个对象增加功能,而且还能动态撤销。
8.代理模式与装饰器模式的区别
   
装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。因此,在代理类中创建一个对象的实例;而将原始对象作为一个参数传给装饰者的构造器。
9.外观模式(Facade)
   
为了解决类与类之间的依赖关系,将它们的关系放在一个Facade类中,降低了类类之间的耦合度。
10.桥接模式(Bridge)
   
把事物和其具体实现分开,使他们可以各自独立地变化。如JDBC。
11.组合模式(Composite)
   
在处理树形结构的问题时比较方便。如TreeNode
12.享元模式(Flywight)
   
共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。适用于作共享的一些对象,他们有一些共有的属性。
 
三、行为型模式
13.策略模式
   
通过让多个算法实现同一接口,使它们可以相互替换。并可设计一个抽象类,提供辅助函数。
   
与工厂模式结构上较相似,差异在于一个关注对象的创建,让创建和使用无关;一个关注行为的封装,让策略的变化独立于使用策略的客户。工厂相当于黑盒子,策略相当于白盒子。
14.模板方法模式
   
一个抽象类中,有一个主方法,再定义n个抽象或实际的方法。定义一个继承该抽象类的类,重写抽象方法。通过调用主方法实现对子类重写方法的调用。
15.观察者模式(Observer)
16.迭代子模式(Iterator)
17.责任链模式
   
每个对象持有对下一个对象的引用,请求在链上传递,直到某一对象处理该请求,但发出者并不清楚最终哪个对象会处理。所以可以在隐瞒客户端的情况下,对系统进行动态的调整。
18.命令模式(Command)
   
目的是达到命令的发出者和执行者之间解耦。Command类构造器中传入执行者,命令者类构造器中传入command命令。
19.备忘录模式
   
保存一个对象的某个状态,以便在适合的时候恢复对象。原始类A中声明创建和返回备份类以及从备份类中恢复的方法。
20.状态模式(State)
21.访问者模式(Visitor)
   
把数据结构和作用于其上的操作解耦,将有关行为集中到一个访问者对象中,适用于数据结构相对稳定且算法易变的系统。
22.中介者模式(Mediator)
    Mediator类持有其他类的实例,用来实现对它们的控制,而它们之间互相独立。用来降低类类之间的耦合。
23.解释器模式(Interpreter)
   
对类所实现接口的interpret方法中传入的context参数作不同的处理。用来做各种各样的解释器。

引用:http://blog.csdn.net/zhangerqing
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 设计模式