java适配器模式火鸡变凤凰是,读《HeadFirst设计模式》笔记之适配器模式
適配器模式:將一個類的接口,轉換成客戶期望的另一個接口。適配器讓原本接口不兼容的類可以合作無間
一個圖很信息的說明適配器模式:
? ? ? ? ? ? ? ? ? ??
舉個栗子:
還記得策略模式中的鴨子嘛!現在有一個火雞想加入到鴨子的隊列中。但火雞不會呱呱的叫,只會咕咕的叫,能飛,但不能像鴨子(野鴨)飛那么遠。那么我們就來包裝下吧。
這是火雞的接口
public interface Turkey {
public void gobble();
public void fly();
}
火雞的實現:
public class WildTurkey implements Turkey {
public void gobble() {
System.out.println("Gobble gobble");
}
public void fly() {
System.out.println("i am flying a short distance");
}
}
還記得鴨子的接口嗎?
public interface Duck {
public void quack();
public void fly();
}
顯然火雞的接口和鴨子的接口不匹配,所以我們來做一個適配器吧!
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
// 包裝叫聲,符合鴨子接口
public void quack() {
turkey.gobble();
}
// 包裝飛行,飛5次,追上鴨子的飛行距離
public void fly() {
for (int i = 0; i < 5; i++) {
turkey.fly
}
}
}
我們開始使用這個鴨子了:
public class DuckTestDrive() {
WildTurkey turkey = new WildTurkey();
// 火雞偽裝鴨子
Duck turkeyAdapter = new TurkeyAdapter(turkey);
turkeyAdapter.quack();
turkeyAdapter.fly();
}
火雞成功偽裝成鴨子了!那么為什么火雞要偽裝成鴨子呢?
不想改變原有的兩個接口,又想讓兩個接口合作,那么就用適配器實現兩個接口的對接
適配器模式和裝飾者模式區別:適配器將一個對象包裝起來以改變其接口;裝飾者將一個對象包裝起來以增加新的行為和責任
總結
以上是生活随笔為你收集整理的java适配器模式火鸡变凤凰是,读《HeadFirst设计模式》笔记之适配器模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 后Kubernetes时代的微服务
- 下一篇: php中update语句修改多个字段,M