java设计模式简单大白话归纳

1工厂模式:用来创建单一产品( 生产产品的接口只有一个方法 通过不用的实现生产不同的产品)
用统一接口来完成生产类的方法 具体对象通过具体实现类来产生
类对象的方法也可以用接口定义 具体功能也是通过具体实现类产生

2抽象工厂模式:和工厂模式的区别就是用来创建多个产品(生产产品的接口可以有很多方法 每一个来生产不同的产品 不同的实现类区别在于各个产品又有不同分类)

3单利模式:
懒汉:原始标准版 —》syncronized同步式-------》双重检查机制 且变同步方法为代码块锁

静态内部类:
利用了类加载机制来保证类初始化时候只有一个单例,线程安全的且没有性能损耗

饿汉式:
浪费资源 因为一旦类的其他静态方法 方法被使用或者类加载了 即使没有用到单例也会创建

特殊饿汉式---注册登记式  存放在ConcurrentHashMap中

枚举单例:
可以防止同步问题和反序列化

4建造者模式:通过一个专用接口实现某一类产品各个部分的组装 并返回最终成品 可以通过一个指挥者director类来实现具体构造者构造产品的过程 提供方法返回成品
当然也是作用在接口上面的 好处就是复用

5原型模式: 就是复制对象 深浅复制 实现cloneable

6适配器模式:将某个类的接口转换成客户端期望的另一个接口表示,消除接口不匹配产生的兼容性问题 -------从代码上来说本质上就是保留原有的方法与功能的基础上拓展新的功能
(1)类的适配器:继承原有类 实现新的接口 这样就在原有方法基础上 产生新的方法
(2)对象的适配器:持有原有类 实现新的接口 用原有类来完成原来的方法 同样达成在 保留原有方法的基础上拓展新的功能
(3)接口的适配器:
有时候我们想要用某个接口但是不想实现全部的方法就可使用-------用抽象类做中介,实现接口 具体类继承抽象类 需要什么方法实现什么方法即可

7装饰模式:给一个新的对象增加新的功能
接口提供增强方法 在抽象类中实现方法并引用同样实现了接口的需要被增强的方法
具体增强的业务使用具体的类继承抽象类来完成即可

8代理模式:代理原对象实现增强操作
一个代理类持有一个被代理对象 都实现同样的接口 在代理类中完成增强操作
和装饰的区别: 代理类的代理关系是在编译的时候确定的 装饰的装饰关系是在运行时可以动态绑定的

9外观模式:主要功能是用来解耦
用一个类来持有几个类对象 并使用其中的方法(而不是让这几个类自己互相发生关系)
例如:一个computer对象操作cpu memory disk对象 来完成电脑启动的流程工作

10桥接模式:说白了就是像jdbc一样可以在想要换一个连接的时候直接更换相应的连接,即提供一个抽象让我们可以在在各个对象间实现切换
定义一个抽象类 持有一个具体的接口对象
创建一个类继承抽象类 调用抽象类的获取对象/执行对象方法的函数
我们在使用这个类的时候 只要传入实现了相同接口(例如jdbc数据库连接的接口 下面可以有好几个不同的具体数据库的实现类)的相对应的实现类即可 想要换一个类就传入另外一个 就可以实现动态切换了

11组合模式:将多个对象组合在一起操作 常用于树结构

12享元模式:就是对系统中对象的共享管理 数据库连接池就是用的这个思想

13策略模式:提供不同的策略供用户选择
提供一个接口 设置一个方法
提供一个抽象类 可以提供辅助方法
不同的实现类实现接口 继承抽象类 对外提供不同的功能

14模版方法:
一个抽象类中,有一个主方法,再定义其他的方法
定义一个继承该抽象类的类,重写抽象方法
通过抽象类的引用,实现对子类的调用

15观察者方法:
当某一个对象进行一定操作的时候 同时让其他一系列对象一起进行操作 就好像一堆人观察者你 你行动了 就让他们也一起行动
定义一个抽象类 管理一个集合对象 并且提供
实现这个抽象类 在完成相应功能的同时去调用抽象类中对所有对象被管理对象操作的方法

16迭代子模式:
就跟java里面的集合一样
提供一个人类管理一个数组 拥有一个Iterator
Iterator来完成对数组的遍历操作 hasNext previous next等的操作

17责任链模式:
有一条对象构成的链条 一个对象引用另外一个一直引用下去
用户的请求在这条链条上传播 由一个对象传给下一个(只一个)对象 在某个地方进行处理 用户并不知道具体哪个对象处理了请求

18命令模式:
目的是将请求和执行分开 A发出执行命令 经过B传递 让C去执行
具体的实现就是 C可以是具体类 定义一个接口 让B实现并且持有C对象 A持有B对象
19备忘录模式:用来恢复数据
普通类 ------------备忘录类---------------备忘录持有类
在普通类要存储数据的时候 生成一个备忘录类持有原来的数据 并且加入备忘录持有类
在想要恢复数据的时候 在备忘录持有类中获取这个备忘录类来拿到原来存储的数据

20状态模式:
根据不同的状态执行不同的方法
有一个状态类
有一个类持有状态类 提供方法 方法里面根据状态类的不同状态执行状态类相对应的方法

21访问者模式:
分离数据结构和作用于结构上的操作
访问者类访问方法 里面调用数据结构类的方法
数据结构类提供一个接受访问者类的方法 里面调用访问者类的访问方法
一旦需要访问数据结构 就让数据结构类去接受访问者类 进而就可以调用访问者类的访问方法 — 》 数据 和 操作分离

22中介者模式:类似spring容器 用一个中介类草管理其他类的关系 而不同让不同类之间产生关联 就减少耦合
中介者对象持有几个类 并且有对应的方法 对应不同类执行了不同操作后 让其他类执行相对应的操作
各个不同的类持有中介者对象 并且可以调用中介者对象相对应的方法
这样当某个类执行了操作后 中介者对象就会去通知其他类 进而执行相对应的操作
例如一个设备打开后 中介者就会去打开另外两个设备

23解释器模式:采用已经定义好的规则 翻译一段具体的内容
正则就是用的解释器模式
用一个解释器类 持有一个需要被解释的对象 翻译成具体的结果并输出

发布了66 篇原创文章 · 获赞 44 · 访问量 7321
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章