一,创建模式
1,工厂方法模式
.在功能实现中,当要创建一个不知道具体的实现类的时候,可以以接口的形式实现,并把实现类的创建交给工厂方法
2,抽象工厂方法模式
.不同的工厂提供不同的功能,产品类中可以根据需要到对应的工厂中获取对应的组件功能. 从整体来看每个工厂犹如具体产品类的一个抽像方法.
3,创建者模式
.可在此类下根据功能需要创建复杂对象,并返回结果给调用者
4,单例模式
.见博客
5,原型模式
.当类只想要一个类的部分属性时,通过克隆比实例化要更方便简洁
二,结构模式
1,适配器模式
.实现接口的形式进行适配,如一个Listener接口定义了多个事件(click/move...),这时在添加事件时要用到MouseAdapter类
.对象组合的形式进行适配,如一个业务功能中需要加入另外一个业务,如公众号中的对外部户号进行转换
2,桥接模式
.DriverManager(实现) 与Driver(抽象) --->将抽象部分与它的实现部分分离,使它们都可以独立地变化。
3,组合模式
.表示“部分-整体”的层次结构,联想到的是公众号菜单树,每个菜单点都可通过迭代器处理整合所有子结点功能
4,装饰器模式
.当要对一个类添加额外附加功能时,如集合类...
5,门面模式
.为外部系统接入当前子系统提供的一组接口,如mysql接入java.sql
6,代理模式
.为其他对象提供一种代理以控制对这个对象的访问
7,享元模式
.主要功能就是以创建一个Flyweight pool来达到内存共享的状态,如一组实现相同接口的对象放在池里,根据参数属性选择是创建还是从池里得到
三,行为模式
1,观察者模式
oberverable一点触发,通知到所有被添加进的observer
2,监听事件模式
event/listener 每个监听器监听自己的一个事件
3,命令模式
.见博客 commend/receiver 主要是让commend拥有状态,可达到do undo 等功能
4,模板模式
.在一个类中定义 如start-process-end 让一个类以定义好的模板方式进行执行
5,责任链模式
.使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止
6,策略模式
.根据不同的参数,选择出一个对应的策略类来执行
7,迭代器模式
.看list源码
8,解释器模式
.见博客
9,访问者模式
.vistor接口中定义要访问的一些功能.vistable--->accept(vistor) ,具体的vistable实现vistor中的一个具体功能.
当要实现一系列功能时,而这些功能本身又没有怎么联系,这时候可以通过这模式联系起来,vistor(封装所有功能) vistable负责处理具体一个功能
10,中介者模式
.如迪米法特原则
11,备忘录模式
.在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。
12,状态模式
.每一个状态类,都记录着1,当前状态要做的事.2,以及切换到对应的下一状态.