<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
    主站蜘蛛池模板: 亚洲精品高清视频| 亚洲一区AV无码少妇电影☆| 亚洲第一页中文字幕| 在线成人爽a毛片免费软件| 亚洲AV日韩AV天堂一区二区三区| 在线毛片片免费观看| 亚洲日本精品一区二区| 在线观看免费av网站| jiz zz在亚洲| 免费一级毛片正在播放| 国产免费福利体检区久久| 国产亚洲一区二区精品| 91在线手机精品免费观看| 亚洲中文字幕无码av在线| 免费看大黄高清网站视频在线| 亚洲成a人无码亚洲成av无码| 国产91久久久久久久免费| 特级aaaaaaaaa毛片免费视频| 亚洲最大AV网站在线观看| 97人妻精品全国免费视频| 亚洲午夜成激人情在线影院| 最新69国产成人精品免费视频动漫| 亚洲av无码专区在线电影天堂| 亚洲精品无码av天堂| 99久久综合精品免费| 亚洲色偷偷色噜噜狠狠99| 亚洲综合色在线观看亚洲| 曰批全过程免费视频播放网站| 最新亚洲精品国偷自产在线| 亚洲精品专区在线观看| 精品一区二区三区无码免费视频| 亚洲永久在线观看| 亚洲性久久久影院| 免费看片在线观看| 成年大片免费高清在线看黄| 亚洲天天在线日亚洲洲精| 日本成人免费在线| a级毛片免费全部播放| 亚洲熟女乱色一区二区三区| 亚洲综合激情另类专区| 成年在线观看网站免费|