原文:http://blog.csdn.net/chmask/article/details/2631485
1.工厂模式(Factory Method):子类只能是平级关系,如父类是动物,子类是猫和狗
2.抽象工厂模式(Abstract Factory):子类之间也能是包含关系,如:父类是组件,子类可以是列表和文本,其中列表中能包含文本
3.单例模式(Singleton):使类不能直接new出来,而要通过newInstance获取,而且一个类只能有一个实例.单例分懒汉式和饿汉式,前者是调用newInstance时已经生成实例, 后者则是如果调用时没生成实例,返回一个新实例
4.建造模式(Builder):建造过程由builder(工人)参与,而调用时通过Director(主管)调用工人来完成
5.原型模式(ProtoType):通过实现Clonable接口,调用clone()方法来实现细节,也分浅拷内(只拷贝简单属性的值和对象属性的地址)和深拷内(拷贝本对象引用的对象,有可能会出现循环引用的情况)
import java.io.*; public class TestClonealbe { public static void main(String[] args) throws Exception { Father f=new Father(); User u1=new User("123456",f); User u2=(User)u1.clone(); System.out.println(u1==u2); System.out.println(u1.f==u2.f); } } class User implements Cloneable,Serializable{ String password; Father f; public User(String password,Father f){ this.password=password; this.f=f; } public Object clone() throws CloneNotSupportedException { //return super.clone(); ObjectOutputStream out=null; ObjectInputStream in=null; try { ByteArrayOutputStream bo=new ByteArrayOutputStream(); out = new ObjectOutputStream(bo); out.writeObject(this); out.flush(); byte[] bs=bo.toByteArray(); ByteArrayInputStream bi=new ByteArrayInputStream(bs); in = new ObjectInputStream(bi); Object o=in.readObject(); return o; } catch (IOException e) { e.printStackTrace(); return null; } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } finally{ try { out.close(); in.close(); } catch (IOException e) { e.printStackTrace(); } } } } class Father implements Serializable{}
6.适配器模式(Adapter):把一个接口转换成另一个接口,类似于鼠标通过adapter把usb接口转换成ps2接口
7.组合模式(Composite) 把整体和局部的关系用树状结构描述出来,使得客户端把整体对象和局部对象同等看待。类就是典型的组合模式,它是属性,方法和构造器的组合.
8.装饰模式(Decorator) 以对客户透明的方式来扩展对象的功能。 用户根据功能需求随意选取组成对象的成分,通过方法的链式调用来实现。 可以给对象动态的增加功能,比继承灵活性更大。类似类构造器
9.代理模式(Proxy) 用一个代理对象来作为另一个对象的代理,对客户来说是透明的。 存在一个抽象主题类,具体主题类和代理主题类都继承(实现)抽象主题,代理主题类中的方法会调用具体主题类中相对应的方法。验证就是典型的代理模式,所有不合法的数据全部由系统代为处理.
10.享元模式(Flyweight Pattern) 对象的状态分为内蕴状态和外蕴状态。内蕴状态不随环境变化而变化,因此可以作成系统共享. 如:"尊敬的XXX,你好"就能用享元,其中XXX以外的部分为内蕴状态
11.门面模式(Facade):外部与一个子系统的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用 。每一个子系统只有一个门面类,而且此门面类只有一个实例,也就是说它是一个单例模式。但整个系统可以有多个门面类。即门面操作类似window系统,作用是通过简单操作实现复杂效果
12.桥梁模式(Bridge) 将抽象和实现脱耦,使得二者可以单独变化。使得一个继承关系不承担两个变化因素.使用合成来代替继承的一种体现.如:hibernate中DAO层
15.观察者模式(Observer) 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新。观察者和被观察者的分开,为模块划分提供了清晰的界限。在低耦合的对象间完成协调。典型如:天气预报,当天气有变化时通知相关人员.
16.迭代器模式(Iterator) 类似于集合中的Iterator,使用迭代器来统一不同集合对象的遍历方式。如:XXX的父亲叫什么(继续下去)
17.责任链(Chain of Responsibility) 多个处理器对象连成一串,请求在这条链上传递,由该处理这个请求的处理器来处理。发出请求的客户端并不知道哪个对象处理请求。(典型的就是try catch模式)
18.调停者模式(MEDIATOR):调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显作用。如:支付宝担保系统
(后面几个没学会怎么用,有空再学习吧)
原文:http://www.cnblogs.com/hanyuchuqing/p/3794574.html