设计模式
2019-07-23 本文已影响0人
做自己的Yang光
https://www.cnblogs.com/geek6/p/3951677.html
单例模式:某个类只能有一个实例,提供一个全局访问点。
工厂模式:定义了一个创建对象的接口,让子类决定实例化哪个类。
适配器模式:将一个类的接口转换成用户希望的另一个接口,让原本不兼容的两个接口完成无缝对接。
代理模式:给对象提供一个代理,并由代理对象控制对原对象的访问。
观察者模式:对象间一对多的依赖关系,当一个对象状态改变时,它所有的依赖者(观察者)都会收到通知并自动更新。
装饰器模式:动态的给对象添加新的功能。要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
单例模式实现
http://wuchong.me/blog/2014/08/28/how-to-correctly-write-singleton-pattern/
http://www.importnew.com/27056.html
注意:单例模式用来保证系统中一个类只有一个实例。单例类的构造函数必须为私有,同时单例类必须提供一个全局访问点。
单例模式有五种写法:饿汉、懒汉、双重检验锁、静态内部类、枚举。(均为线程安全的实现)。
一般情况下直接使用饿汉式,如果明确要求 要懒加载(lazy initialization)会倾向于使用静态内部类,如果涉及到反序列化创建对象时会试着使用枚举的方式来实现单例。
饿汉式
![](https://img.haomeiwen.com/i11303303/82193729886a01f4.png)
懒汉式
![](https://img.haomeiwen.com/i11303303/f00e481db8b6100f.png)
![](https://img.haomeiwen.com/i11303303/9a2e1956f1938dae.png)
双重检验锁
![](https://img.haomeiwen.com/i11303303/aef6ca8204fed4cb.png)
静态内部类
![](https://img.haomeiwen.com/i11303303/9bc541d1c12cd2fa.png)
枚举
![](https://img.haomeiwen.com/i11303303/4587923234a9366a.png)