适配器模式 | 您所在的位置:网站首页 › 猫抓的图 › 适配器模式 |
适配器模式——双向适配器
一、问题描述二、问题分析1.类图分析
三、适配器模式的优点四、代码及结果
一、问题描述
设计和实现一个双向适配器实例,使得猫Cat可以学狗Dog叫Cry(),狗可以学猫抓老鼠CatchMouse(),设计类图并编程实现。 二、问题分析 1.类图分析将目标类和适配者类解耦,增加了类的透明性和复用性,将具体的实现封装在适配者类中,对于客户端类来说是透明的,而且提高了适配者的复用性。同时灵活性和扩展性都非常好,符合开闭原则。 四、代码及结果Cat接口(另一个类似): public interface Cat { void cry(); void catchMouse(); }实体Cat类(另一个类似): public class ConcreteCat implements Cat{ @Override public void cry() { System.out.println("猫叫"); } @Override public void catchMouse() { System.out.println("猫抓老鼠"); } }适配器类: public class Adapter implements Dog,Cat{ private Cat cat; private Dog dog; public Cat getCat() { return cat; } public void setCat(Cat cat) { this.cat = cat; } public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } @Override public void cry() //猫学狗叫 { System.out.print( "猫学"); dog.wang(); } @Override public void catchMouse() { cat.catchMouse(); } @Override public void wang() { dog.wang(); } @Override public void action() //狗学猫抓老鼠 { System.out.print( "狗学"); cat.catchMouse(); } } }Test测试类 public class Test { public static void main(String args[]) { Cat cat1 = new ConcreteCat(); Dog dog1 = new ConcreteDog(); Adapter A1 = new Adapter(); A1.setCat(cat1); A1.setDog(dog1); cat1 = (Cat) A1; cat1.catchMouse(); cat1.cry(); dog1 = (Dog) A1; dog1.action(); } }运行结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |