常用设计模式

151 阅读2分钟

单例模式(创建模式)

保证系统中只有一个实例。

1、懒汉式 线程安全 懒加载 效率慢

2、饿汉式 线程安全 效率高 类加载时就初始化,产生垃圾对象
3、双检锁 线程安全 懒加载 效率高
使用valitile保证可见性
4、静态内部类 线程安全 懒加载
静态内部类在被使用时才会去加载
5、枚举类

枚举,在第一次被真正用到的时候,会被虚拟机加载并初始化,而这个初始化过程是线程安全的

工厂模式(创建模式)

提供创建对象的方式

简单工厂模式

根据类型返回指定的对象,简单,扩展比较方便,但是对象类型较多的时候难以维护

工厂方法模式

工厂方法是简单工厂的深入,针对每一种产品提供一个工厂类。通过不同的工厂实例来创建不同的产品实例 适用于产品类型比较复杂的情况

抽象工厂

抽象工厂是工厂方法模式的深入,使用于不同产品之前存在组合的情况,为每种组合创建工厂,形成工厂簇

策略模式(行为模式)

封装了不用的实现方式,通过策略模式,实现不用的实现的切换

优点:扩展方便,只要增加新的策略就可以了;避免了多重条件的判断
缺点:策略的实现需要暴露个客户端,客户端需要了解策略才能决定使用哪种策略

改良:混合工厂模式

观察者模式/发布订阅模式(行为模式)

迭代器模式(行为模式)

用于顺序访问集合中的元素,而不需要知道集合对象的底层表示

模板方法模式(行为模式)

抽象类中公开了方法的执行方式(模板),子类按照需求重新方法,调用以抽象类中的方式执行

适配器模式(结构型)

作为两个不兼容接口的桥梁,使一个接口可以提供另一个接口的功能,举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡

装饰者模式(结构型模式)

不改变现有对象结构的基础上,添加新的功能。

MVC模式

模型视图控制器模式,代表应用程序的分层开发