单例&代理&观察者模式

写设计模式这一系列随笔是为了自己日后参考、复习所用,具有很大的针对性。作者学习设计模式涉及的书籍有Design Patterns、Head First Design Patterns、研磨设计模式,大家如果想深入、或者不懂之处可以从这三本书上下手。

单例模式

定义


一个类只有一个实例,并提供该实例的全局访问点。 

类图


 

关于实现


懒汉:使用时再创建实例,需要注意线程安全;

饱汉:预先创建实例,需要考虑单例资源的占用是否造成浪费;

完美: static内部类(实现延迟加载) + static初始化(解决线程安全)。

作用


节省系统资源。 

代理模式

定义


为具体对象提供一个代理,控制对这个对象的访问。 

类图


关于动态代理与静态代理


静态代理:是说代理类需要具体持有、实现被代理类的方法,当被代理接口变动时,代理类也需要做出改变;

动态代理:代理类只有一个动态方法,通过反射动态生成被代理类的class来调用被代理类的方法。

作用


远程代理可以实现远程调用、虚代理节省大对象的开销、保护代理可以实现安全控制。

观察者模式

定义


定义对象间一对多的关系,当目标对象发生改变时,其他观察者对象都得到通知。 

类图


 

作用


解耦了目标类与具体观察者;

实现了广播通讯。 

原文地址:https://www.cnblogs.com/dahuandan/p/8150674.html