代码改变世界

随笔档案-2019年08月

23.模版模式

2019-08-27 11:30 by zhongj, 176 阅读, 收藏,
摘要: 一、角色 + 抽象父类(AbstractClass):实现了模板方法,定义了算法的骨架 + 具体类(ConcreteClass):实现抽象类中的抽象方法,即不同的对象的具体实现细节 二、适用场景 + 有多个子类共有的方法,且逻辑相同 + 重要的、复杂的方法,可以考虑作为模板方法 三、实例 + 图1是 阅读全文

22.策略模式

2019-08-23 10:22 by zhongj, 164 阅读, 收藏,
摘要: 一、角色 + 环境类(Context):对策略进行管理 + 抽象策略类(Strategy):所有策略类的抽象接口 + 具体策略类(ConcreteStrategy):具体策略实现类 二、适用场景 + 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许 阅读全文

21.状态模式

2019-08-22 10:42 by zhongj, 154 阅读, 收藏,
摘要: 一、角色 + 环境类(Context):对状态进行管理 + 抽象状态类(State):所有状态类的抽象接口 + 具体状态类(ConcreteState):具体状态实现类 二、适用场景 + 对象的行为依赖于它的状态(属性)并且可以根据它的状态改变而改变它的相关行为 + 代码中包含大量与对象状态有关的条 阅读全文

20.观察者模式

2019-08-21 10:46 by zhongj, 201 阅读, 收藏,
摘要: 一、角色 + 目标(Subject):被观察对象的抽象接口 + 具体目标(ConcreteSubject):被观察对象的具体实现 + 观察者(Observer):观察者对象的抽象接口 + 具体观察者(ConcreteObserver):观察者对象的具体实现 二、适用场景 + 一个抽象模型有两个方面, 阅读全文

19.备忘录模式

2019-08-20 11:16 by zhongj, 159 阅读, 收藏,
摘要: 一、角色 + 原发器(Originator):创建备忘录,并存储它的当前状态,也可以使用备忘录来恢复其内部状态,一般将需要保存内部状态的类设计为原发器 + 备忘录(Memento):存储原发器的内部状态,根据原发器来决定保存哪些内部状态。备忘录的设计一般可以参考原发器的设计,根据实际需要确定备忘录类 阅读全文

18.中介者模式

2019-08-19 15:14 by zhongj, 168 阅读, 收藏,
摘要: 一、角色 + 抽象中介者(Mediator):所有中介对象的抽象接口 + 具体中介者(ConcreteMediator):中介对象具体实现,负责同事功能类的通信 + 抽象同事类(Colleague):所有同事对象的抽象接口 + 具体同事类(ConcreteColleague):同事对象的具体实现 二 阅读全文

17.迭代器模式

2019-08-16 14:31 by zhongj, 104 阅读, 收藏,
摘要: 一、角色 + 抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象的接口 + 具体聚合(ConcreteAggregate)角色:实现抽象聚合类,返回一个具体迭代器的实例 + 抽象迭代器(Iterator)角色:定义访问和遍历聚合元素的接口,通常包含 hasNext() 阅读全文

16.解释器模式

2019-08-13 10:07 by zhongj, 200 阅读, 收藏,
摘要: 一、角色 + 抽象表达式类(Expression):所有具体表达式的抽象基类 + 具体命令类(ConcreteExpression):具体表达式类 二、适用场景 + 可以将一个需要解释执行的语言中的句子表示为一个抽象语法树 + 一些重复出现的问题可以用一种简单的语言来进行表达 + 一个简单语法需要解 阅读全文

15.命令模式

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

14.职责链模式

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

13.代理模式

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

12.享元模式

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

11.门面模式

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

10.装饰者模式

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

9.组合模式

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

8.桥接模式

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