设计模式

用户头像
张明森
关注
发布于: 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 加入

还未添加个人简介

评论

发布
暂无评论
设计模式