23种设计模式
千里草竹
这个作者很懒,什么都没留下…
展开
-
23种设计模式——(1)单例模式
定义 确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式优点由于内存中只有一个实例,减少了内存开支。特别是一个对象频繁地创建、销毁,且创建销毁时性能又无法优化,单例模式优势很明显。减少了系统性能开销(当一个对象的产生需要比较多的资源时,如读取配置文件、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决(在Jav...原创 2018-08-03 17:02:05 · 114 阅读 · 0 评论 -
23种设计模式——(2)工程方法模式
楔子 学习《设计模式之禅(第2版)》 笔记。定义定义一个用于常见对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类工厂类的通用类图工厂方法模式优点# 1 降低了模块间的耦合。# 2 工厂方法模式的扩展性非常优秀# 3 工厂方法模式是典型的解耦框架使用场景# 1 工厂方法模式是new一个对象的替代品,因此在所有需...原创 2018-08-04 17:05:09 · 262 阅读 · 0 评论 -
23种设计模式——(3)抽象工厂模式
定义为创建一组相关或者相互依赖的对象提供一个借口,而且无须指定它们的具体类抽象工厂模式的通用类图抽象工厂模式的优点# 1 封装性# 2 产品族内的约束为非公开状态抽象工厂模式的缺点# 最大的缺点就是扩展困难...原创 2018-08-05 11:42:20 · 128 阅读 · 0 评论 -
23种设计模式——(4)模版方法模式
模版方法模式的定义定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法额机构即可重定义该算法的某些特定步骤注意:抽象模版中的基本方法尽量设计为protectes类型,符合迪米特法则,不要暴露的属性或方法尽量不要设置为protected类型,实现类若非必要,尽量不要扩大父类的访问权限模版方法模型的应用模版方法模型的优点# 1 封装不变部分,扩展可...原创 2018-08-05 12:07:25 · 106 阅读 · 0 评论 -
23种设计模式——(5)建造者模式
定义建造者模式也叫做生成器模式:将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同表示建造者模式通用类图在建造者模式中,有如下4个角色Product产品类# 通常是实现了模仿方法模式,也就是模版方法和基本方法。Builder抽象建造者# 规范产品的组件,一般是由子类实现ConcreteBuilder具体建造者# 实现抽象类定义的...原创 2018-08-05 12:53:04 · 139 阅读 · 0 评论 -
23种设计模式——(6)代理模式
代理模式(委托模式)定义为其他对象提供一种代理以控制这个对象的访问代理模式的通用类图类图中3哥角色的定义Subject抽象主题角色# 可以使一个接口或者抽象类,一个最普通的业务类型定义,无特殊要求。RealSubject# 也叫做被委托角色、被代理角色,业务逻辑的具体执行者Proxy# 也叫做委托类、代理类。负责对真实角色的应用。把所有抽象主题类定义...原创 2018-08-05 13:42:19 · 124 阅读 · 0 评论 -
23种设计模式——(7)原型模式
定义1不通过new 关键字来产生一个对象,而是通过对象复制2:用原型实例指定创建对象的中了你,并且通过拷贝这些原型创建新的对象public class PrototypeClass implements Cloneable { @Override protected PrototypeClass clone() { PrototypeCl...原创 2018-08-05 15:19:20 · 100 阅读 · 0 评论 -
23种设计模式——(8)中介者模式
定义用一个中介对象封一系列的对象交互,中介者使各对象不需要明显地相互作用,从而使其解耦松散,而且可以独立地改变它们之间的交互中介者模式通用类图# 1 mediator#(抽象中介者角色定义统一接口,用于各同时角色之间的通信)# 2 Concrete Mediator 具体中介者角色#(具体中介者角色通过协调各同事角色显示协作行为,因此它必须依赖各个同事角色)# 3 Co...原创 2018-08-06 14:58:32 · 185 阅读 · 0 评论 -
23种设计模式——(9)命令模式
定义将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命名的撤销和恢复功能命令模式通用类图 Reciver接收者角色(命令传到这里被执行)Command 命令角色(需要执行的命令在 这里声明)Invoker 调用者角色(接收到命令,并执行命令)public abstract class Receiver {//抽象接收...原创 2018-08-07 11:18:29 · 121 阅读 · 0 评论