实验8:适配器模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解适配器模式的动机,掌握该模式的结构;

2、能够利用适配器模式解决实际问题

 

[实验任务一]:双向适配器

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

实验要求:

1.画出对应的类图;

2.提交源代码;

3.注意编程规范。

 

 

 

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 on 2025-01-06 15:26    阅读(10)  评论(0)    收藏  举报