盘锦网站建设策划,阿里巴巴网站建设论文,聊城房地产网站建设,营销型网站设计特点行为型模式可以影响一个系统的状态和行为流。 责任链模式#xff1a;
定义一个抽象处理者#xff0c;其中包含了设置了下一个处理者和对请求的处理两个方法。具体的处理者都实现了这个接口。用于处理多级请#xff0c;可以将多个处理者对象串联起来#xff0c;每个处理者都…行为型模式可以影响一个系统的状态和行为流。 责任链模式
定义一个抽象处理者其中包含了设置了下一个处理者和对请求的处理两个方法。具体的处理者都实现了这个接口。用于处理多级请可以将多个处理者对象串联起来每个处理者都有机会处理请求直到某个处理者处理了该请求为止不再给链上的下一个处理者为止。
应用场景一个请求的处理需要多个对象中的一个或若干个对象协作进行处理。
请求的处理者不知道下一个处理的请求对象是谁链条顺序可以任意组合排序。 过滤器Filter类就用到了这种责任链模式。 命令模式
用于将请求调用者发出命令或操作命令的执行者执行命令封装成一个对象。将命令和命令的执行者进行了分离请求发送者不知道具体的执行者是谁。命令类commandClass维护了一个命令接收者/执行者的引用。
commandClass implements CommandInterface{
Receiver receiver
Execute{ receiver.action()}//命令类的执行方法其实是调用的具体执行者的方法。
}
命令模式和代理、桥接等模式从持有一个中间者的结构上来说很相似只是命令模式包括命令调用者命令命令执行者解耦的是命令调用者和命令执行者之间通过命令来实现解耦桥接模式是对接口和实现进行解耦。 解释器模式Interpreter
它定义了一个语言的文法并建立一个解释器来解释该语言中的句子。解释器模式的本质是分离实现解释执行。它通过一个解释器对象处理一个语法规则的方式把复杂的功能分离开然后选择需要被执行的功能并把这些功能组合成为需要被解释执行的抽象语法树再按照抽象语法树来解释执行实现相应的功能。(编译器将高级语言编译成计算机能识别的二进制其实也是一种解释器) 迭代器模式Iterator
它提供一种方法顺序访问一个聚合对象中的各种元素而又不暴露该对象的内部表示。迭代器模式为遍历的对象提供了一个统一的接口使得用户只需要得到迭代器就可以进行遍历而不用去关心遍历算法。Java中ArrayList类提供了一个方法.Iterator可以获取一个ArrayList内部的迭代器类private Class Itr implements Iterator。 中介者模式Mediator
又叫作调解者模式或调停者模式。类之间的交互行为被统一放在中介者Mediator的对象中对象通过中介者对象同其他对象交互中介者对象起着控制器的作用,其他对象维护着一个中介者对象的引用并且提供与中介者之间发送和接收消息的接口。中介者模式用一个中介对象来封装一系列的对象交互使各对象不需要显式地相互作用从而降低耦合而且可以独立地改变它们之间的交互。JMS,JNDI都是中介者模式中的中介者。
备忘录模式Memento
又叫快照模式。在不破坏封装性的前提下捕获一个对象的内部状态并在该对象之外保存这个状态以便以后当需要时能将该对象恢复到原先保存的状态。
游戏存档也是一种备忘录模式。 观察者模式Observer
定义了对象之间的一对多依赖关系当一个对象状态改变时所有依赖于它的对象都会得到通知并自动更新。在观察者模式中一个目标物件管理所有相依于它的观察者物件()并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。Java的锁机制有点观察者模式的味道网上有说不是线程竞争资源的时候如果资源已被锁了则添加进等待对列或者说观察者对列锁释放后唤醒等待对列中的某一个线程。被唤醒的线程从等待对列中移除。 状态模式State
允许对象在内部状态变化时变更其行为并且修改其类。根据不同状态来定位行为或对象的行为依赖于其状态并必须在运行的时候根据状态修改或具有大量取决于对象状态的条件语句时可以使用状态模式。 策略模式Strategy
定义了一组能够用来表示可能行为的集合不同策略有不同的行为。咋一看好像状态模式不同状态有不同行为。策略模式下定义了不同策略的不同行为主要时为了复用一般一个运行环境下只选择一种特定的策略而状态模式中主要关注的时行为随着状态的变化而变化状态可能时经常变化的并且可能是很多状态而策略通常只有一个。例如我建立神经网络模型底层有不同的算法。我们一遍选择了一个策略那么整个运行期间就是一种算法了。 模板方法模式Template Method
提供了在不重写方法的前提下允许子类重载部分方法的方法。例如java的抽象类中将不变的部分封装成模板方法子类可以直接使用不需要重写。或者子类中的其他方法只需要部分重写然后可以直接调用模板方法减少代码重复。 访问者模式Visitor:
结构重点在于每一个元素都实现了接口的acceptVisitor visitor方法可以接收一个具体的concrete访问者。并且方法中访问者会去执行访问这个元素的操作{visitor.visit(this)}具体的操作就由具体的访问者面对具体的元素的不同具体实现来确定了。使用了一种可维护的方法来表示在对象结构元素上要进行的操作。允许在不改变操作元素类的前提下定义一个新操作。定义新操作需要定义一个新的访问者但是增加新元素就比较难了每个访问者都要修改对新元素的支持。