原则1:开放封闭
原则 2:单一职责
原则3:里氏代换:能放父类的地方,一定要能放子类
原则4:依赖倒置具体不
原则5:接口隔离:不要创建
原则6:迪米特:尽量减少类之间耦合
1 简单工厂模式
工厂创建产品直接在方法中进行创建
2 工厂方法模式
把工厂抽象出来 分支处具体的抽象工厂
3 抽象工厂模式
把工厂抽象出来 产品也进行抽象
4 职责链模式
当出现一个请求时,请求对可响应的类进行向上执行,如果此层可处理,则进行处理,不然则向上传递请求,同一链条的类的执行方法使用接口,例:filter,interceptor
5 命令模式
为对象创建command封装类, command类发送命令,调用被封装类的方法,对command可再进行封装出执行类 Executor.execute(Command command),例:MessageQueue Message Handler
6 状态模式
对象有不同的状态,状态不同时执行的动作也不同
7 迭代模式
对对象的集合属性进行遍历,例:iterator
8 代理模式
让对象的方法交给别人代理执行 称为aop,例:cglib和proxy
9 观察者模式
当被观察者中的被观察方法执行时,调用观察者的方法,例:listener
10原型模式
当有对象存在时通知这个已存在的对象复制出一个属性相同的对象,例:clone以及序列化
11建造者模式
创建对象时,使用对象的build类,对对象的属性设置进行封装,例:Dialog.builder 可对builder再进行封装成director
12装饰模式
创建新类对已有的类功能进行扩展,例:BufferrFileOutputStream
13外观模式
把功能封装起来提供给人使用,例:voiddo(){b.do;c.do}
14组合模式
继承或对象包含另一个对象的引用 主对象消亡被组合对象也会消亡
聚合:主对象消亡对被组合对象没有影响
15备忘录模式
对对象的操作进行记录 让用户可以回归到之前的状态,例:commit() rollback()
16 策略模式
把算法进行封装
17 享元模式
常量
18 模板模式
模板类定义功能的具体实现流程 但实现步骤并没有实现
19 解释器模式
根据类所需的文法对象创建数据对象 由类自己对数据对象进行解析 例:setData(Map)
20 单例模式
饿汉氏:程序一运行就初始化 如不使用则浪费内存,线程安全
懒汉式:当需要使用时再进行初始化 减少内存,非线程安全
内部类 当需要使用时再初始化 线程安全推荐使用
21 适配器模式
模块要使用某接口 但模块使用的方法与接口不符合,创建适配器实现接口,在适配器实现的接口方法中调用模块方法例:otg线把usb接口转换成手机充电口
22 中介者模式
把对象传递给中介者, 在中介者里面进行交互
23 访问者模式
24 桥接模式