《软件设计》适配器模式

设计模式-双向适配器的实现

 

实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。

 

 java代码

Adapter

复制代码
复制代码
public class Adapter implements CatTarget, DogAdaptee {

    private CatTarget cattarget;
    private DogAdaptee dogadaptee;
    public Adapter() {
        // TODO Auto-generated constructor stub
    }

    public void setCattarget(CatTarget cat) {
        this.cattarget=cat;
    }
    public void setDogAdaptee(DogAdaptee dog) {
        this.dogadaptee=dog;
    }
    @Override
    public void wang() {
        // TODO Auto-generated method stub

        System.out.println("猫学狗汪汪叫");
        cattarget.catchMouse();

    }

    @Override
    public void catchMouse() {
        // TODO Auto-generated method stub
        System.out.println("狗学猫抓老鼠");
        cattarget.catchMouse();

        dogadaptee.wang();
    }

}
复制代码
复制代码

CarTarget

public interface CatTarget {

    public abstract void catchMouse();
}

ConcreteCarTarget

复制代码
复制代码
public class ConcreteCatTarget implements CatTarget {

    
    @Override
    public void catchMouse() {
        // TODO Auto-generated method stub

        System.out.println("抓老鼠");
    }

}
复制代码
复制代码

ConcreteDogAdaptee

复制代码
复制代码
public class ConcreteDogAdaptee implements DogAdaptee{


    @Override
    public void wang() {
        // TODO Auto-generated method stub
        
        System.out.println("汪汪叫");
    }

}
复制代码
复制代码

DogAdaptee

public interface DogAdaptee {

    public abstract void wang();

}

Client

复制代码
复制代码
public class Client {
    public static void main(String[] args) {
        //适配器
        Adapter adapter = (Adapter) XMLUtil.getBean("adapterPattern");
 
        //目标类通过适配器调用适配者方法
        CatTarget concreteCatTarget = (ConcreteCatTarget) XMLUtil.getBean("adapterPatternTarger");
        adapter.setCattarget(concreteCatTarget);
        adapter.wang();
 
        //适配者通过适配器调用目标类方法
        DogAdaptee concreteDogAdaptee = (ConcreteDogAdaptee) XMLUtil.getBean("adapterPatternAdaptee");
        adapter.setDogAdaptee(concreteDogAdaptee);
        adapter.catchMouse();
    }
}

 

复制代码
复制代码
posted @   new菜鸟  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示