<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 人在江湖 閱讀(877) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 国产亚洲福利在线视频| 亚洲国产一区国产亚洲 | 亚洲中文字幕乱码一区| 国产乱子伦精品免费女| 国产真人无码作爱免费视频 | 亚洲理论片在线中文字幕| 热99re久久精品精品免费| 免费人成在线观看视频高潮| 亚洲色图校园春色| 亚洲阿v天堂在线2017免费| 亚在线观看免费视频入口| 国产精品亚洲lv粉色| 亚洲成人动漫在线| 又粗又硬又黄又爽的免费视频 | 精品国产_亚洲人成在线| 亚洲国产国产综合一区首页| 狠狠久久永久免费观看| 久久国产精品萌白酱免费| 亚洲A∨精品一区二区三区下载| 亚洲a在线视频视频| 亚洲高清最新av网站| 永久免费在线观看视频| EEUSS影院WWW在线观看免费| 亚洲国产日韩综合久久精品| 亚洲成AV人片在线观看WWW| 国产大片免费观看中文字幕| xxxx日本免费| 日本免费久久久久久久网站| 男女猛烈激情xx00免费视频| 亚洲乱码中文论理电影| 久久久久亚洲AV成人无码网站| 免费看男女下面日出水视频| 噼里啪啦免费观看高清动漫4| 久久精品视频免费播放| 无码人妻一区二区三区免费视频| 亚洲色最新高清av网站| 亚洲精品国产电影午夜| 亚洲成在人线av| 亚洲中文字幕久久精品无码APP| 免费一看一级毛片全播放| 最近免费中文字幕大全视频 |