设计模式
2020-05-12 15:44:03 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
设计模式
组合模式
树状结构,形成聚合关系如Node
迭代器模式
interface Iterator<E>boolean hasNext();E next();
实现Iterator接口的容器,都可以用while循环遍历
访问者模式
适用格式固定的场景,如asm例:编译器
不同类型的Visitor,采取不同的策略,展示不同的内容
构建器模式
链式编程,builder
适配器模式
桥接模式
通过聚合,实现对一个事物,不同维度的组合
Gift g = new WarmGift(new Flower());
桥接:抽象类A聚合抽象类B(A类有成员变量B)A的其他子类,能set B的其他子类
命令模式
封装各种各样的命令void do(){}void undo(){}
一、Transactioncommand+备忘录模式mememto二、多次undocommand+责任链模式COR三、宏命令command+组合模式composite
原型模式
克隆 clone
注意区分深克隆、浅克隆
备忘录模式
记录快照
模板方法模式
abstract class F { public void m() { op1(); op2(); } abstract void op1(); abstract void op2();}
状态模式
根据状态决定动作
解释器
单例模式
饿汉,类加载到内存后,就实例化一个单例,线程安全
懒汉,按需初始化,普通,线程不安全
懒汉,按需初始化,synchronize方法,线程安全
懒汉,按需初始化,synchronize代码块,双重检查,线程安全
静态内部类,JVM保证单例加载外部类时不会加载内部类,这样可以实现懒加载
枚举
策略模式
排序Sorter,传入不同实现Comparator的Strategy实现类
装饰器模式
interfacevoid m();
Entity.classvoid m(){...}
Decorator.class构造器传入interface,并赋值内部成员interfacevoid m(){interface.m()}递归调用方法
DecoratorAvoid m(){super.m()}
DecoratorBvoid m(){super.m()}
工厂模式
简单工厂
抽象工厂
外观模式
责任链模式
interface Filtervoid doFilter();
class XXXFilter
class FilterChain
把各种XxxxFilter添加到FilterChain后,递归调用 filter.doFilter()
观察者模式
事件Event
监听器Listener
Hook
Callable
代理模式
静态代理
动态代理
JDK代理
核心:实现InvocationHandler
被代理类,需要实现interface
Cglib代理
核心:实现MethodInterceptor
被代理类,不需实现interface
享元模式
重复利用元数据
总结
OCP:总纲,对扩展开放,对修改关闭
SRP:类的职责要单一
LSP:子类可以透明替换父类
DIP:面向接口编程
ISP:接口的职责要单一
LoD:降低耦合
0 条评论
回复 删除
下一页