随笔分类 - 设计模式
摘要:模式定义 给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用 为什么使用代理 在不改变目标对象方法的情况下对方法进行增强 代理模式实例 静态代理 先创建一个用户接口(UserInterface),声明一个方法 创建实现类(UserImpl) 创建代理对象类(UserProxy),通过代理类
阅读全文
摘要:在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法。我们可以想一下,有时候我们需要一个工厂可以提供多个产品对象,而不是单一的产品对象,即产品族。这个时候我们就需要使用抽象工厂模式。
阅读全文
摘要:在简单工厂模式中,我们发现存在很多问题:
由于工厂类集中了所有产品创建逻辑,一旦不能正常工作,整个系统都要受到影响。
要新增产品类的时候,就要修改工厂类的代码,违反了开放封闭原则(对扩展的开放,对修改的关闭)。
简单工厂模式由于使用了静态工厂方法,造成工厂角色无法形成基于继承的等级结构。
为了解决上述的问题,我们学习一种新的设计模式:工厂方法模式。
阅读全文
摘要:简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式定义了一个创建对象的类,由这个类来封装实例化对象的行为。
阅读全文
摘要:定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。
阅读全文
摘要:模式定义
动态的将新功能附加到对象上,在对象功能扩展方面,它比继承更有弹性。
设计原则
多用组合,少用继承
类应设计的对扩展开放,对修改关闭。
阅读全文
摘要:模式定义 确保一个类最多只有一个实例,并提供一个全局访问点。 单例模式分为饿汉式和懒汉式。 懒汉式单例模式:在类加载时不初始化。 饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。 饿汉式-线程安全 懒汉式-线程不安全 懒汉式-线程安全 双重校验锁-线程安全 静态内部类
阅读全文
