设计模式之访问者模式

文章通过Java代码展示了如何使用接口来定义动物的行为,如接受喂食。Dog和Cat类实现了Animal接口,Person接口包含了feed方法来喂养不同类型的动物。PersonImpl和PersonImplOnRim实现了Person接口,有不同的喂食行为。Hone类则负责管理动物列表并调用accept方法来执行喂食动作。
摘要由CSDN通过智能技术生成

 

 

 

//动物行为
public interface animal {
    void accept(person p);
}
public class dog implements animal{
    @Override
    public void accept(person p) {
        p.feed(this);
        System.out.println("狗吃饭");

    }
}
public class cat implements  animal{
    @Override
    public void accept(person p) {
 p.feed(this);
 System.out.println("猫吃饭");
    }
}

 

public interface person {

  //需要与抽象元素的子实现类的个数以及名称一致,需要依赖具体实现类
  void   feed(cat c);
  void feed(dog d);
}
public class personlmpl implements  person {

    @Override
    public void feed(cat c) {
        System.out.println("主人喂");
        c.accept(this);
    }

    @Override
    public void feed(dog d) {
        System.out.println("主人喂");
        d.accept(this);
    }
}


public class personlmplonr implements  person {



    @Override
    public void feed(cat c) {
        System.out.println("其他人喂");
        c.accept(this);
    }

    @Override
    public void feed(dog d) {
        System.out.println("其他  人喂");
        d.accept(this);
    }
}
//结构对象
public class hone {

    private List<animal> list=new ArrayList<animal>();
    //添加动物
    public void add(animal a){
        list.add(a);
    }
    public void action(person p){
for(animal a:list){
    a.accept(p);
}
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值