代码改变世界

15.命令模式

2019-08-12 17:06 by zhongj, 183 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 抽象命令类(Command):所有具体命令的抽象基类 + 具体命令类(ConcreteCommand):具体命令类,实现具体命令方法 + 调用者(Invoker):命令调用者 + 接受者(Receiver):命令接受者 二、适用场景 + 系统需要将请求调用者和请求接收者解耦,使得调用者 阅读全文

14.职责链模式

2019-08-09 11:46 by zhongj, 133 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 抽象处理者角色(Handler):定义出一个处理请求的接口。如果需要,接口可以定义 出一个方法以设定和返回对下家的引用。这个角色通常由一个Java抽象类或者Java接口实现 + 具体处理者角色(ConcreteHandler):具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给 阅读全文

13.代理模式

2019-08-08 11:39 by zhongj, 122 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 主题接口(Subject):定义代理类和真实主题的公共对外方法 + 真实主题(RealSubject):真正实现业务逻辑的类 + 代理类(ProxyHandler):用来代理和封装真实主题 二、适用场景 + 代理对象存在的价值主要用于拦截对真实业务对象的访问 + 代理对象应该具有和目标 阅读全文

12.享元模式

2019-08-07 10:18 by zhongj, 108 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + FlyWeight 享元接口或者(抽象享元类),定义共享接口 + ConcreteFlyWeight 具体享元类,该类实例将实现共享 + UnSharedConcreteFlyWeight 非共享享元实现类 + FlyWeightFactory 享元工厂类,控制实例的创建和共享 二、适 阅读全文

11.门面模式

2019-08-06 10:44 by zhongj, 180 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 门面(Facade)角色:外观模式的核心。它被客户角色调用,它熟悉子系统的功能。内部根据客户角色的需求预定了几种功能的组合 + 子系统角色:实现了子系统的功能。它内部可以有系统内的相互交互,也可以由供外界调用的接口 二、适用场景 + 为子系统中的一组接口提供统一的访问接口 + 把一些复 阅读全文

10.装饰者模式

2019-08-05 12:03 by zhongj, 188 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象 + 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类 + 装饰(Decorator)角色:持有一个构件(Component)对象的实例,并定义一个与抽象构件接口一致的接口 阅读全文

9.组合模式

2019-08-02 14:41 by zhongj, 170 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + 组合对象接口 + 组合对象实现类(无子节点) + 组合对象实现类(有子节点) 二、适用场景 + 需求中是体现部分与整体层次结构的时候,如树形菜单,文件、文件夹的管理 三、实例 + 图 1中实现了一个公司到子公司到部门的层级结构树,Company是所有组合对象实现类的声明接口,HRDep 阅读全文

8.桥接模式

2019-08-02 11:17 by zhongj, 239 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + Abstraction(抽象类) + RefinedAbstraction(扩充抽象类) + Implementor(实现类接口) + ConcreteImplementor(具体实现类) 二、适用场景 + 如果一个系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个 阅读全文

7.适配器模式

2019-07-31 11:50 by zhongj, 168 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + Target(目标接口):被适配者实现的接口 + Adapter(适配者):实现目标接口的类 + Adaptee(被适配):被适配者使用的类 二、适用场景 + 使用一个已经存在的类,而它的接口不符合你的需求 + 创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类协同工作 三、 阅读全文

6.原型模式

2019-07-30 10:57 by zhongj, 189 阅读, 0 推荐, 收藏, 编辑
摘要:一、角色 + Prototype(抽象原型类):负责定义用于复制现有实例来生成新实例的方法 + ConcretePrototype(具体原型类):负责实现复制现有实例并生成新实例的方法 + Client(客户类/使用者):负责使用复制实例的方法生成新的实例 二、适用场景 + 对象种类繁多,无法将他们 阅读全文