包含要素: Vistor:抽象访问者,为每一个element元素声明一个方法 ConcreteVistor:具体访问者 Element:抽象元素 ConcreteElemen...
包含要素: AbstractClass:抽象类,规定模板 ConcreteClass:具体实现类,实现模板中的具体实现步骤 示例demo:我们外卖点饭和点下午茶的流程都是一样...
包含要素: Context:封装对策略的调用 Strategy:抽象策略 ConcreteStrategy:具体策略 示例demo:我们现在买东西支付时,可以使用支付宝支付,...
使用场景:状态和行为比较复杂时,为了避免大量if else,可以使用状态模式。 包含要素: Context:环境类,包含一些内部状态 State:抽象状态类 Concrete...
观察者模式也被称为发布-订阅模式 包含要素: Subject:目标 Observer:观察者 ConcreteSubject:具体目标,维护观察者列表,并可以添加删除通知观察...
使用场景:可以使系统恢复到某一特定的历史状态 包含要素: Originator:原发器,创建一个备忘录。 Memento:备忘录,用于存储Originator的内部状态 Ca...
使用场景:如果一个类调用另一个类中的方法,可以通过第三方转发这个调用,在复杂系统中,使用中介者模式,可以减少对象之间的联系,降低耦合。 包含角色: Mediator:抽象中介...
使用场景:现在集合中已经提供了迭代器,所以一般不需要自己开发。 包含角色: Iterator:抽象迭代器 ConcreteIterator:具体迭代器 Aggragate:抽...
应用场景:根据规定语法进行解析(解释器模式用的比较少)。 包含要素: AbstractExpression:抽象表达式 TerminalExpression:终结符表达式(运...
使用场景:发送者和接收者完全解耦,发送者不关心具体实现,只需要发送命令给调用者,由调用者来传达给具体的接收者。 包含要素: Command:抽象命令类 ConcreteCom...
应用场景:如果一个任务包含多步,且上一步通过才能进入下一步 包含要素: Handler:抽象处理者 ConcreteHandler:具体处理者 Client:客户端类 示例d...
应用场景:代理对象控制对原有对象的引用,连接客户端和目标对象 包含要素: Subject:抽象角色,真实对象和代理对象的共同接口 Proxy:代理角色,代理对象和真实对象实现...
使用场景:细粒度共享对象的池化。String常量池,线程池等都是享元模式的应用。 组成要素: Flyweight:抽象享元角色 ConcreteFlyweight:具体享元角...
应用场景:对外提供一个门面,封装对子系统的调用,客户端只需要通过门面进行访问。 包含要素: Facade:外观角色 SystemSub:子系统角色 实例demo:
应用场景:动态的给一个对象增加额外的职责,装饰者模式比子类继承更为灵活。 组成要素: Component:抽象构件 ConcreteComponent:具体构件,被装饰的对象...
使用场景:将对象组合成树形结构来描述部分-整体的层次结构,使得用户对单个对象和组合对象的使用具有一致性。 包含要素: Component:叶子节点和非叶子节点的共同点的抽象 ...