更多的可以參考我的博客洞难,也在陸續(xù)更新ing
http://www.hspweb.cn/
適配器模式將一個類的接口,轉換成客戶期待的另一個接口色冀。適配器讓原本接口不兼容的類可以合作無間。
這個適配器充滿著良好地OO設計原則:使用對象組合锋恬,以修改的接口包裝被適配者:這種做法還有額外的缺點,那就是与学,被適配者的任何子類,都可以搭配著適配器使用索守。
下面以火雞包裝成一個鴨子為例子:
1.目錄
image
2.package duck
①. Duck.java
package duck;
public interface Duck {
public void quack();
public void fly();
}
②.MallardDuck.java
package duck;
public class MallardDuck implements Duck{
@Override
public void quack() {
// TODO Auto-generated method stub
System.out.println("quack");
}
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I am flying");
}
}
2.package turkey
①.Turkey.java
package turkey;
public interface Turkey {
public void gobble();
public void fly();
}
②.WildTurkey.java
package turkey;
public class WildTurkey implements Turkey{
@Override
public void gobble() {
// TODO Auto-generated method stub
System.out.println("Gobble gobble");
}
@Override
public void fly() {
// TODO Auto-generated method stub
System.out.println("I am flying a short distance");
}
}
3.package adapter
①.TurkeyAdapter.java
package adapter;
import duck.Duck;
import turkey.Turkey;
public class TurkeyAdapter implements Duck{
Turkey turkey;
public TurkeyAdapter (Turkey turkey){
this.turkey=turkey;
}
@Override
public void quack() {
// TODO Auto-generated method stub
turkey.gobble();
}
@Override
public void fly() {
// TODO Auto-generated method stub
for(int i=0;i<5;i++){
turkey.fly();
}
}
}
4.package test
①.test.java
package test;
import adapter.TurkeyAdapter;
import duck.Duck;
import duck.MallardDuck;
import turkey.WildTurkey;
public class Test {
public static void main(String[] args) {
MallardDuck duck=new MallardDuck();
WildTurkey turkey=new WildTurkey();
Duck turkeyAdapter=new TurkeyAdapter(turkey);
System.out.println("The Turkey says...");
turkey.gobble();
turkey.fly();
System.out.println("\nThe Duck says...");
testDuck(turkeyAdapter);
}
private static void testDuck(Duck duck) {
// TODO Auto-generated method stub
duck.quack();
duck.fly();
}
}
補充類圖
image