Java设计模式

一、Singleton单例模式

饥汉式

单例1

image-20200716182311548

2

image-20200716182452055

image-20200716182617126

image-20200716183011196

image-20200716183147812

image-20200716183412873

二、Strategy 策略模式

  • 对做同一件事情的不同实现方式。

image-20200716192603195

image-20200716193100546

Sorter

image-20200716193254503

main方法

三、工厂模式

  • 任何可以产生对象的方法或类都可以叫做工厂。
  • 单例也是一种工厂。

1、简单工厂

2、工厂方法

3、抽象工厂

可以干什么用接口、是什么用抽象类

image-20200717162224835

4、Spring IOC

四、调停者Mediator

消息中间件、解耦

五、门面Facade

image-20200717164252667

image-20200717164348001

六、修饰器Decorator

七、责任链

image-20200717171209958


image-20200717172354061


image-20200717181527229


image-20200717181739793

image-20200717182104050

八、观察者 Observer

事件处理模式

image-20200718102608601

九、组合Composite

树状结构专用模式

十、享元flyweight

重复利用对象

String 就是享元模式

image-20200718105459149

结合composite的享元模式

十一、代理Proxy

  1. 静态代理

image-20200718110826286

image-20200718110925099

  1. 动态代理

image-20200718111819318

image-20200718113658600


image-20200718124411507

十二、迭代器 Iterator

构建动态扩列的实现

image-20200718171921582

集合类

image-20200718172050769

image-20200718172415447

十三、访问者 Visitor

在结构不变的情况下动态改变对于内部元素的动作

image-20200718173616887

image-20200718173755943

image-20200718173936710

十四、构建器Builder

构建复杂对象

image-20200718175857682

image-20200718175950797

image-20200718180516426

十五、Adapter(Wrapper)

接口转接器

image-20200718181007277

十六、Bridge

双维度扩展

分离抽象与具体

用聚合方式(桥)连接抽象与具体

十七、命令模式Command

do(),undo()

十八、原型模式Prototype

Object.clone()

image-20200718183150367

  • Java中自带原型模式
  • 实现原型模式需要实现标记型接口Cloneable
  • 一般会重写clone()方法
  • 一般用于一个对象的属性已经确定,需要产生很多相同对象的时候
  • 需要区分深克隆与浅克隆

十九、备忘录Memento

记录状态

便于回滚

记录快照、存盘

二十、模板TemplateMethod

勾子函数

二十一、状态模式State

根据状态决定行为

二十二、解释器Intepreter

动态脚本解析

面向对象编程原则

  • 单一职责原则

  • 开闭原则:对扩展开放、对修改闭合

  • 里氏替换原则:所有子类能替代父类

  • 依赖倒置原则:面向抽象编程、面向接口编程

  • 接口隔离原则:每个接口只承担独立角色、避免子类实现不需要的方法、对客户端暴露最小接口

Q.E.D.