适配器模式(一)
实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。
1. 类图
2.源代码
//ICat.java package test8; public interface ICat { public void eat(); public void catLook(); } //IDog.java package test8; public interface IDog { public void wang(); public void dogLook(); } //CatImpl.java package test8; public class CatImpl implements ICat{ public void catLook() { // TODO Auto-generated method stub System.out.println("猫的样子"); } public void eat() { // TODO Auto-generated method stub System.out.println("猫抓老鼠"); } } //DogImpl.java package test8; public class DogImpl implements IDog{ public void dogLook() { // TODO Auto-generated method stub System.out.println("狗的样子"); } public void wang() { // TODO Auto-generated method stub System.out.println("狗汪汪叫"); } } //Adapter.java package test8; public class Adapter implements ICat,IDog{ private IDog DogImpl = null; private ICat CatImpl = null; public Adapter(IDog DogImpl,ICat CatImpl) { // TODO Auto-generated constructor stub this.DogImpl = DogImpl; this.CatImpl = CatImpl; } @Override public void dogLook() { // TODO Auto-generated method stub System.out.println("狗模仿"); CatImpl.catLook(); } @Override public void wang() { // TODO Auto-generated method stub System.out.println("狗模仿"); CatImpl.eat(); } @Override public void catLook() { // TODO Auto-generated method stub System.out.println("猫模仿"); DogImpl.dogLook(); } @Override public void eat() { // TODO Auto-generated method stub System.out.println("猫模仿"); DogImpl.wang(); } } //Client.java package test8; public class Client { public static void main(String[] args) { Adapter adapter = new Adapter(new DogImpl(),new CatImpl()); adapter.catLook(); adapter.eat(); System.out.println("**************"); adapter.dogLook(); adapter.wang(); } }