寫在前面:
本文例子來自天龍八部,當年鳩摩智挑戰少林寺高僧,聲稱本身學會七十二絕技,實際上是用火焰刀,而後催動小無相功轉換的虛假絕技,那麼這裏就體現了適配的用處,有點強行解釋哈,不過原理差很少php
target(目標): 七十二絕技
Adaptee(源): 火焰刀
Adapter(適配器): 小無相功code
首先類適配器
代碼實現:繼承
目標七十二絕技get
/** * 少林七十二絕技 * Interface Qishier */ interface QishierTarget { public function jueji(); }
自己具備的武功火焰刀io
/** * 火焰刀的武功 * class HuoYanDaoAdaptee */ class HuoYanDaoAdaptee { public function huo(){ echo '使用火焰刀'; } }
重點小無相功的適配器function
繼承了原來的火焰刀絕技,而後轉換成了少林七十二絕技class
/** * 小無相功的適配器 * Class XwxgAdapter */ include_once "HuoYanDaoAdaptee.php"; include_once "QishierTarget.php"; class XwxgAdapter extends HuoYanDaoAdaptee implements QishierTarget { public function jueji() { parent::huo(); echo '轉換成七十二絕技'; } }
挑戰少林寺原理
/** * 鳩摩智使用 */ include_once "XwxgAdapter.php"; $adapter = new XwxgAdapter(); $adapter->jueji(); 結果: 少林高僧:施主,你是用火焰刀,而後用小無相功強行使出的七十二絕技吧 鳩摩智:麻蛋,被看出來了