用代码实例分析行为型模式和访问者模式
1 主要将数据结构与数据操作分离。
interface Visitor{ public void visitElement(ElementA elementA); } class VisitorA implements Visitor{ @Override public void visitElement(ElementA elementA) { elementA.doSomething(); } } abstract class Element{ public abstract void accept(Visitor visitor); } class ElementA extends Element{ public void doSomething(){ System.out.println("this is elementA"); } @Override public void accept(Visitor visitor) { visitor.visitElement(this); } } class ObjectStruture{ private ArrayListlist = new ArrayList (); public void traverseElement(Visitor visitor){ Iterator i = list.iterator(); while (i.hasNext()){ ((Element)i.next()).accept(visitor); } } public void addElement(Element element){ list.add(element); } } public class Test{ public static void main(String[] args){ ObjectStruture objectStruture = new ObjectStruture(); for (int i = 0; i < 5; i++) objectStruture.addElement(new ElementA()); objectStruture.traverseElement(new VisitorA()); } }