行为型模式-访问者模式

Posted 风流 少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行为型模式-访问者模式相关的知识,希望对你有一定的参考价值。

案例

给宠物喂食:宠物有狗、猫等,要给宠物喂食,可以是主人喂,也可以是其它人喂。

/**
 * 抽象访问者角色类
 */
public interface Person 
    void feed(Cat cat);
    void feed(Dog dog);



/**
 * 具体访问者角色类
 */
public class Owner implements Person 
    @Override
    public void feed(Cat cat) 
        System.out.println("主人喂食宠物猫");
    

    @Override
    public void feed(Dog dog) 
        System.out.println("主人喂食宠物够");
    



/**
 * 具体访问者角色类
 */
public class Someone implements Person 
    @Override
    public void feed(Cat cat) 
        System.out.println("其他人喂食宠物猫");
    

    @Override
    public void feed(Dog dog) 
        System.out.println("其他人喂食宠物够");
    



/**
 * 抽象原色角色类
 */
public interface Animal 
    void accept(Person person);


/**
 * 具体元素角色类
 */
public class Cat implements Animal 
    @Override
    public void accept(Person person) 
        person.feed(this);
    


/**
 * 具体原色角色类
 */
public class Dog implements Animal 
    @Override
    public void accept(Person person) 
        person.feed(this);
    


/**
 * 对象结构类
 */
public class Home 
    private List<Animal> nodeList = new ArrayList<>();

    public void add(Animal animal) 
        nodeList.add(animal);
    

    public void action(Person person) 
        for (Animal animal : nodeList) 
            animal.accept(person);
        
    


public class Client 
    public static void main(String[] args) 
        Home home = new Home();
        home.add(new Dog());
        home.add(new Cat());

        Owner owner = new Owner();
        home.action(owner);
    

以上是关于行为型模式-访问者模式的主要内容,如果未能解决你的问题,请参考以下文章

从零开始学习Java设计模式 | 行为型模式篇:访问者模式

Java设计模式之十一种行为型模式(附实例和详解)

JAVA SCRIPT设计模式--行为型--设计模式之Vistor访问者(23)

JAVA SCRIPT设计模式--行为型--设计模式之Vistor访问者(23)

JAVA设计模式(23):行为型-访问者模式(Visitor)

Java开发中的23种设计模式