java设计模式9.备忘录模式、访问者模式、调停者模式
2018-11-02 21:53
603 查看
- 备忘录模式
备忘录模式又叫快照模式,备忘录对象是一个用来存储另外一个对象内部状态快照的对象。备忘录的用意是在不破坏封装的条件下,将一个对象的状态捕捉,并外部化存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态,备忘录模式常与命令模式和迭代子模式一起使用。
- 访问者模式
访问者的目的是封装一些施加于某种数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。访问者模式使适用于数据结构相对未定的系统,它把数据结构和作用于结构之上的操作解耦。
- 抽象访问者角色Visitor:声明一个或多个访问操作,形成所有的具体元素角色必须实现的接口。
- 具体访问者角色ConcreteVisitor:实现抽象访问者角色所声明的接口。
- 抽象节点角色Node:声明一个接受操作,接受一个访问者对象作为一个参量。
- 具体节点角色Node:实现抽象元素所规定的接受操作。
- 结构对象角色ObjectStructrue:能够遍历结构中所有元素,如果需要,提供一个高层次的接口让接口访问者可以访问每一个元素,可以设计成一个符合对象或者一个聚集。
public abstract class Node { public abstract void accept(Visitor visitor); } public class NodeA extends Node{ @Override public void accept(Visitor visitor) { visitor.visit(this); } public void operationA(){ System.out.println("A"); } } public class NodeB extends Node{ @Override public void accept(Visitor visitor) { visitor.visit(this); } public void operationB(){ System.out.println("B"); } }
public interface Visitor { void visit(NodeA node); void visit(NodeB node); } public class VisitorA implements Visitor{ @Override public void visit(NodeA node) { node.operationA(); } @Override public void visit(NodeB node) { node.operationB(); } } public class VisitorB implements Visitor{ @Override public void visit(NodeA node) { node.operationA(); } @Override public void visit(NodeB node) { node.operationB(); } }
public class ObjectStructure { private List<Node> nodes; public ObjectStructure(){ nodes = new ArrayList<Node>(); } public void action(Visitor visitor){ for(Node node : nodes){ node.accept(visitor); } } public void add(Node node){ nodes.add(node); } }
public class Client { public static void main(String[] args) { ObjectStructure structs = new ObjectStructure(); structs.add(new NodeA()); structs.add(new NodeB()); Visitor visitor = new VisitorA(); structs.action(visitor); } }
- 调停者模式
调停者模式包装了一系列对象相互作用的方式,使得这些对象不必互相明显引用。从而使它们可以较松散地耦合,当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用。从而保证这些相互作用可以彼此独立地变化。
在调停者模式中,所有的成员对象都可以协调工作,但又不直接相互管理。这些对象都与一个处于中心地位的调停者对象发生紧密的关系,由这个调停者对象进行协调工作。这个协调者对象叫做调停者,而调停者所协调的成员对象称作同事对象。
#笔记内容参考《java与模式》
相关文章推荐
- JAVA设计模式之访问者模式原理与用法详解
- Java23种设计模式之-----访问者模式
- JAVA设计模式十四--Visitor(访问者模式)
- java行为设计模式——访问者模式
- Java 设计模式之访问者模式的详解(行为模式)
- Java设计模式之从[暗黑破坏神存档点]分析备忘录(Memento)模式
- Java进阶篇设计模式之十 ---- 访问者模式和中介者模式
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 访问者模式(Visitor) - Java实现
- Java 23种设计模式之访问者模式
- JAVA设计模式之访问者模式详解
- 深入浅出Java设计模式之备忘录模式
- Java设计模式(17) -- 访问者
- JAVA -备忘录设计模式
- Java设计模式之中介者模式(调停者模式)
- Java设计模式之访问者模式
- java设计模式(行为型)之备忘录模式
- Java设计模式-----Visitor访问者模式
- JAVA设计模式——访问者模式
- java23种设计模式(4)-访问者模式
- java设计模式---备忘录模式