TreeviewCopyright © qgao 2021-* all right reserved, powered by aleen42

访问者模式

Client

package com.bermuda.surface;

import com.bermuda.background.*;

public class Client {

    public static void main(String[] args) {
        ObjectStructure objectStructure = new ObjectStructure();

        objectStructure.attach(new Man());
        objectStructure.attach(new Woman());

        Success success = new Success();
        objectStructure.display(success);

        Marriage marriage = new Marriage();
        objectStructure.display(marriage);
    }
}

ObjectStructure

package com.bermuda.background;

import java.util.ArrayList;
import java.util.List;

public class ObjectStructure {

    private List<Person> elements = new ArrayList<Person>();

    public void attach(Person element){
        elements.add(element);
    }

    public void detach(Person element){
        elements.remove(element);
    }

    public void display(Action visitor){
        for (Person e:elements
             ) {
            e.accept(visitor);
        }
    }
}

Person

package com.bermuda.background;

public abstract class Person {
    public abstract void accept(Action visitor);
}

Man

package com.bermuda.background;

public class Man extends Person {
    public void accept(Action visitor) {
        visitor.getManConclusion(this);
    }
}

Woman

package com.bermuda.background;

public class Woman extends Person {
    public void accept(Action visitor) {
        visitor.getWomanConclusion(this);
    }
}

Action

package com.bermuda.background;

public abstract class Action {
    public abstract void getManConclusion(Man concreteElementA);
    public abstract void getWomanConclusion(Woman concreteElementB);
}

Success

package com.bermuda.background;

public class Success extends Action {
    public void getManConclusion(Man concreteElementA) {
        System.out.println(concreteElementA.getClass().getSimpleName()+" "+this.getClass().getSimpleName()+"时,背后多半有一个伟大的女人");
    }

    public void getWomanConclusion(Woman concreteElementB) {
        System.out.println(concreteElementB.getClass().getSimpleName()+" "+this.getClass().getSimpleName()+"时,背后大多有一个不成功的男人");
    }
}

Marriage

package com.bermuda.background;

public class Marriage extends Action {
    public void getManConclusion(Man concreteElementA) {
        System.out.println(concreteElementA.getClass().getSimpleName()+" "+this.getClass().getSimpleName()+"时,感慨道:恋爱游戏终结时,‘有妻徒刑’遥无期");
    }

    public void getWomanConclusion(Woman concreteElementB) {
        System.out.println(concreteElementB.getClass().getSimpleName()+" "+this.getClass().getSimpleName()+"时,欣慰曰:爱情长跑路漫漫,婚姻保险保平安");
    }
}
Copyright © qgao 2021-* all right reserved,powered by Gitbook该文件修订时间: 2022-07-08 21:13:28

results matching ""

    No results matching ""