一:适配器模式
将一个类的接口,转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作无间。
二:设计原则
最少知识原则:只和你最亲密的类接触
不要让太多的类耦合在一起
三:实例
public class DuckAdapterTest {
//主方法
public static void main(String[] args) {
MallardDuck mallardDuck = new MallardDuck();
WildTurkey wildTurkey = new WildTurkey();
Duck duckAdapter = new TurkeyAdapter(wildTurkey);//将火鸡适配成鸭子
System.out.println("火鸡的调用");
wildTurkey.gobble();
wildTurkey.fly();
System.out.println();
System.out.println("鸭子的调用");
mallardDuck.quack();
mallardDuck.fly();
System.out.println();
System.out.println("适配的方法,假装成鸭子的火鸡");
testDuck(duckAdapter);
}
public static void testDuck(Duck duck) {
duck.quack();
duck.fly();
}
}
/**
* 鸭子的接口
*/
public interface Duck {
public void quack();
public void fly();
}
/**
* 火鸡的接口
*
*/
public interface Turkey {
public void gobble();
public void fly();
}
/**
* 绿头鸭
*/
public class MallardDuck implements Duck {
@Override
public void quack() {
System.out.println("quack 的叫");
}
@Override
public void fly() {
System.out.println("飞飞的远");
}
}
/**
* 野生的火鸡
*
*/
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("gobble 的叫");
}
@Override
public void fly() {
System.out.println("飞的很近");
}
}
/**
* 火鸡的适配器
*/
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
@Override
public void quack() {
turkey.gobble();
}
@Override
public void fly() {
System.out.println("多飞一些");
for(int i = 0 ; i<5 ;i++) {
turkey.fly();
}
}
}
适配器模式的作用在于两个不兼容的的系统接口 通过适配器 进行适配 使之兼容,但又不改变原有的代码