<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    人在江湖

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

    參考:http://en.wikipedia.org/wiki/Visitor_pattern

    class=thumbimage

    Example
    The following example is in the Java programming language, and shows how the contents of a tree of nodes (in this case describing the components of a car) can be printed. Instead of creating "print" methods for each subclass (Wheel, Engine, Body, and Car), a single class (CarElementPrintVisitor) performs the required printing action. Because different subclasses require slightly different actions to print properly, CarElementDoVisitor dispatches actions based on the class of the argument passed to it.

    alt=A Diagram of the Java Code Example.        I, the copyright holder of this work, hereby release it into the public domain.  This applies worldwide. In case this is not legally possible, I grant any entity the right to use this work for any purpose, without any conditions, unless such conditions are required by law.

    interface CarElementVisitor {
        void visit(Wheel wheel);
        void visit(Engine engine);
        void visit(Body body);
        void visit(Car car);
    }
    interface CarElement {
        void accept(CarElementVisitor visitor); // CarElements have to provide accept().
    }
    class Wheel implements CarElement {
        private String name;
        public Wheel(String name) {
            this.name = name;
        }
        public String getName() {
            return this.name;
        }
        public void accept(CarElementVisitor visitor) {
            visitor.visit(this);
        }
    }
    class Engine implements CarElement {
        public void accept(CarElementVisitor visitor) {
            visitor.visit(this);
        }
    }
    class Body implements CarElement {
        public void accept(CarElementVisitor visitor) {
            visitor.visit(this);
        }
    }
    class Car implements CarElement{
        CarElement[] elements;
        public CarElement[] getElements() {
            return elements.clone(); // Return a copy of the array of references.
        }
        public Car() {
            this.elements = new CarElement[]
              { new Wheel("front left"), new Wheel("front right"),
                new Wheel("back left") , new Wheel("back right"),
                new Body(), new Engine() };
        }
        public void accept(CarElementVisitor visitor) {
            for(CarElement element : this.getElements()) {
                element.accept(visitor);
            }
            visitor.visit(this);
        }
    }
    class CarElementPrintVisitor implements CarElementVisitor {
        public void visit(Wheel wheel) {    
            System.out.println("Visiting "+ wheel.getName()
                                + " wheel");
        }
        public void visit(Engine engine) {
            System.out.println("Visiting engine");
        }
        public void visit(Body body) {
            System.out.println("Visiting body");
        }
        public void visit(Car car) {    
            System.out.println("Visiting car");
        }
    }
    class CarElementDoVisitor implements CarElementVisitor {
        public void visit(Wheel wheel) {
            System.out.println("Kicking my "+ wheel.getName() + " wheel");
        }
        public void visit(Engine engine) {
            System.out.println("Starting my engine");
        }
        public void visit(Body body) {
            System.out.println("Moving my body");
        }
        public void visit(Car car) {
            System.out.println("Starting my car");
        }
    }
    public class VisitorDemo {
        static public void main(String[] args){
            Car car = new Car();
            car.accept(new CarElementPrintVisitor());
            car.accept(new CarElementDoVisitor());
        }

    posted on 2011-02-13 14:19 人在江湖 閱讀(878) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 产传媒61国产免费| 国产精品亚洲一区二区三区在线观看 | 波多野结衣免费在线观看| 久久精品7亚洲午夜a| 野花香高清视频在线观看免费| 亚洲性在线看高清h片| jizz免费在线影视观看网站| 亚洲中文字幕无码爆乳av中文| 四虎精品免费永久免费视频| 日日噜噜噜噜夜夜爽亚洲精品| 久99久无码精品视频免费播放| 亚洲中文字幕无码久久2017| 免费毛片a线观看| 亚洲精品成人图区| 毛片免费观看视频| 精品国产亚洲第一区二区三区 | 免费毛片网站在线观看| 精品国产亚洲一区二区三区在线观看| 免费国产成人高清在线观看麻豆| 免费观看又污又黄在线观看| 久久九九亚洲精品| 国内精品免费麻豆网站91麻豆| 亚洲妇女熟BBW| 亚洲午夜激情视频| 99久久国产免费中文无字幕| 91丁香亚洲综合社区| 在线观看永久免费视频网站| 国产无遮挡色视频免费观看性色 | 67194在线午夜亚洲| 国产成人无码免费视频97| 一级一黄在线观看视频免费| 久久精品国产亚洲av麻豆| 久久经典免费视频| 深夜免费在线视频| 亚洲国产综合精品中文第一区 | 一级午夜免费视频| 亚洲国产成人久久精品app| 免费看国产一级特黄aa大片| 国产精品99久久免费观看| 亚洲成在人线在线播放无码| 狠狠综合久久综合88亚洲|