设计模式
2020-05-12 15:44:03 0 举报
AI智能生成
设计模式
作者其他创作
大纲/内容
组合模式
树状结构,形成聚合关系
如Node
如Node
迭代器模式
interface Iterator<E>
boolean hasNext();
E next();
boolean hasNext();
E next();
实现Iterator接口的容器,
都可以用while循环遍历
都可以用while循环遍历
访问者模式
适用格式固定的场景,如asm
例:编译器
例:编译器
不同类型的Visitor,采取不同的策略,展示不同的内容
构建器模式
链式编程,builder
适配器模式
桥接模式
通过聚合,实现对一个事物,不同维度的组合
Gift g = new WarmGift(new Flower());
桥接:抽象类A聚合抽象类B(A类有成员变量B)
A的其他子类,能set B的其他子类
A的其他子类,能set B的其他子类
命令模式
封装各种各样的命令
void do(){}
void undo(){}
void do(){}
void undo(){}
一、Transaction
command+备忘录模式mememto
二、多次undo
command+责任链模式COR
三、宏命令
command+组合模式composite
command+备忘录模式mememto
二、多次undo
command+责任链模式COR
三、宏命令
command+组合模式composite
原型模式
克隆 clone
注意区分深克隆、浅克隆
备忘录模式
记录快照
模板方法模式
abstract class F {
public void m() {
op1();
op2();
}
abstract void op1();
abstract void op2();
}
public void m() {
op1();
op2();
}
abstract void op1();
abstract void op2();
}
状态模式
根据状态决定动作
解释器
单例模式
饿汉,类加载到内存后,就实例化一个单例,线程安全
懒汉,按需初始化,普通,线程不安全
懒汉,按需初始化,synchronize方法,线程安全
懒汉,按需初始化,synchronize代码块,双重检查,线程安全
静态内部类,JVM保证单例加载外部类时不会加载内部类,这样可以实现懒加载
枚举
策略模式
排序Sorter,传入不同实现Comparator的Strategy实现类
装饰器模式
interface
void m();
void m();
Entity.class
void m(){...}
void m(){...}
Decorator.class
构造器传入interface,并赋值内部成员interface
void m(){interface.m()}
递归调用方法
构造器传入interface,并赋值内部成员interface
void m(){interface.m()}
递归调用方法
DecoratorA
void m(){super.m()}
void m(){super.m()}
DecoratorB
void m(){super.m()}
void m(){super.m()}
工厂模式
简单工厂
抽象工厂
外观模式
责任链模式
interface Filter
void doFilter();
void 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 条评论
下一页