1.策略模式(Strtegy)
提供不同的算法,实现同一个策略接口
(1)JUC中线程池 ThreadPoolExcutor中的四种饱和策略(拒绝策略)
2.模板方法模式(Model Method)
父类中提供不变的执行框架方法,算法核心调用抽象方法交给子类实现
(1)Java JUC包中的AQS抽象队列同步器
主要维护一个表示资源状态的state,一个任务队列,和锁
其中锁的释放与获取,任务队列的入队列与出队列在内部以实现完整的步骤,而什么情况下改变状态状态参数要由具体的需求去实现,所以延迟到子类中实现
(2)AbstractList,AbstractSet中实现公用部分的执行框架,而具体实现类中不同的执行则延迟到子类中
(3)InputStream中也类似父类中定义不可变执行框架,不同的算法执行延迟到子类中实现
3.责任链模式(Chain of Responsibility)
请求的处理者成链状,请求会在链上被处理,但客户端不知道会被哪些对象处理
(1)JVM中类加载器ClassLoader的双亲委派模型
4.命令模式(Command)
封装操作,使接口一致,将操作交于第三方管理者管理使得调用者与接收者在时间空间上解耦
(1)Runnable,Callable 客户端直接执行线程 -->由Runnable,Callable封装线程操作进行线程管理与执行
(2)ThreadPoolExecutor 管理线程的执行
5.观察者模式(Observer)
事件对象状态发生变化通知其观察者们
(1)java.util.Observer,Observable
(2)Swing中的Listener
6.迭代器模式(Iterator)
集合本身与集合的迭代器分离
(1)jdk中集合 Collection,Iterator
集合中有迭代器内部类,通过工厂方法模式iterator()方法返回迭代器
实现迭代器与集合本身分离
7.状态模式(State)
将主对象与其状态分离,状态对象负责著对象状态的转换,使主对象类功能减轻,且扩展性变强
8.访问者模式(Visitor)
对不同元素类型实现不同的访问方式,visitor中定义访问方法
不改变元素的情况下添加新的访问方法
9.中介者模式(mediator)
在多对多复杂的网状关系中添加一个中介者组织相关关系,而变为一对多关系的梳理
协调相互关系,降低耦合度
(1)Swing的ButtonGroup
10.备忘录模式(Memento)
保存对象状态,需要时可恢复
11.解释器模式(Interpreter)
用一组类代表某一规则
(1)java.util.regex.Pattern
类图:四则运算
参考:https://blog.csdn.net/qq_38311489/article/details/89439835