设计模式行为型模式 设计模式 2022-03-08 状态模式 定义State Pattern:允许一个对象在其内部状态改变的时候改变其行为。 状态模式的状态是不可替换的而且是兄弟关系,但是策略模式是可以替换的彼此独立的。他们执行完之后的行为也不同,状态模式会更改状态但是策略模式执行完就是执行完。 类图 跟策略模式的类图一样… 角色 Read More
设计模式行为型模式 设计模式 2022-03-08 策略模式 定义Strategy Pattern:定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。 模版方法模式的区别在于:在模版方法模式中,调用算法的主体在抽象的父类中,而在策略模式中,调用算法的主体则是封装到了封装类Context中,抽象策略Strategy一般是一个接口,目的只是为了定义规范,里面一般不包含逻辑。 类图 角色 Context(环境类):维护指向具体策略的引用, 且仅通过策略接口与该对象进行交流。目的是避免高层模块对策略的直接调用。 Read More
设计模式行为型模式 设计模式 2022-03-08 观察者模式 定义Observer Pattern:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 类图 角色 抽象主题(Subject)角色:抽象主题角色把所有对观察者对象的引用保存在一个聚集(比如ArrayList对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,抽象主题角色又叫做抽象被观察者(Observable)角色。 具体主题(ConcreteSubject)角色:将有关状态存入具体观察者对象;在具体主题的内部状态改变时,给所有登记过的观察者发出通知。具体主题角色又叫做具体被观察者(Concrete Observable)角色。 Read More
设计模式行为型模式 设计模式 2022-03-08 解释器模式 定义Interpreter Patttern:给定一个语言,定义它的文法的一种表示,并定义一个解释器。 类图 角色 AbstractExpression(抽象表达式):声明一个所有的具体表达式角色都需要实现的抽象接口。这个接口主要是一个interpret()方法,称做解释操作。 TerminalExpression(终结符表达式):实现了抽象表达式角色所要求的接口,主要是一个interpret()方法;文法中的每一个终结符都有一个具体终结表达式与之相对应。比如有一个简单的公式R=R1+R2,在里面R1和R2就是终结符,对应的解析R1和R2的解释器就是终结符表达式。 Read More
设计模式行为型模式 设计模式 2022-03-08 备忘录模式 定义Memento Pattern:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。 类图 角色 原发器 (Originator) :记录当前时刻的内部状态,负责定义哪些属于备份范围的状态,负责创建和恢复备忘录数据。 备忘录 (Memento) :负责存储发起人对象的内部状态,在需要的时候提供发起人需要的内部状态。 Read More