写点什么

设计模式

用户头像
张明森
关注
发布于: 2020 年 08 月 03 日

什么是设计模式:

一种问题的通用解决方案

模式的四个部分:

名称;要决解的问题;解决方案;结论

设计模式分类

功能:

创建模式:类的实例化过程

结构模式:类与对象结合

行为模式:不同对象之间划分责任和算法

方式:

类模式

对象模式


常见涉及模式整理如下:

-----------------------------------------------------------------------

一、创建型模式

1.单例模式

1).要决解的问题

要求类只有一个实例对象时

2).解决方案

核心代码

class Singleton  {	private static final Singleton singleton=new Singleton();	private Singleton(){}	public static Singleton getInstance(){	    return singleton;	}}
复制代码
3).优点

类只有一个实例,节省内存开支

4).缺点

没有接口,扩展时需要修改代码

5).应用

Spring 中注解默认为单例,单例基于单例注册表(Map)实现

2.工厂方法模式

可以使用配置参数、注解等来获取对象

3.抽象工厂模式

4.原型模式


浅克隆:复制它本身和其中包含的值类型的成员变量,而引用类型的成员对象是复制的引用。

深克隆:值类型、引用类型的成员变量,都复制一份给克隆对象。

5.建造者模式


二、行为型模式

6.模板方法模式


7.命令模式

8.责任链模式

9.装饰器模式

10.迭代器模式

11.观察者模式

12.备忘录模式

13.访问者模式

14.状态模式

15.中介者模式

16.解释器模式


https://www.runoob.com/design-pattern/interpreter-pattern.html

17.享元模式

18.桥接模式

三、结构型模式

19.代理模式

静态代理

动态代理

client 示例代码:

Subject subject = new ConcreteSubject();Subject proxySubject = (Subject) Proxy.newProxyInstance(  Subject.class.getClassLoader(),  new Class[]{Subject.class},  new DynamicProxyHandler(subject));proxySubject.request();
复制代码

CGLIB 动态代理


Subject subject = new ConcreteSubject();CglibProxy cglibProxy = new CglibProxy();ConcreteSubject subjectCglibProxy = (ConcreteSubject) cglibProxy.getInstance(subject);subjectCglibProxy.request();
复制代码

20.策略模式

21.适配器模式

类适配器

对象适配器

22 组合模式


23.外观模式


用户头像

张明森

关注

还未添加个人签名 2017.10.16 加入

还未添加个人简介

评论

发布
暂无评论
设计模式