设计模式-适配器模式-例子

写在前面:
本文例子来自天龙八部,当年鸠摩智挑战少林寺高僧,声称自己学会七十二绝技,其实是用火焰刀,然后催动小无相功转换的虚假绝技,那么这里就体现了适配的用处,有点强行解释哈,不过原理差不多

target(目标): 七十二绝技
Adaptee(源): 火焰刀
Adapter(适配器): 小无相功

首先类适配器
代码实现:

目标七十二绝技

/**
 * 少林七十二绝技
 * Interface Qishier
 */
interface QishierTarget
{
    public function jueji();
}

本身具有的武功火焰刀

/**
 * 火焰刀的武功
 * class HuoYanDaoAdaptee
 */
class HuoYanDaoAdaptee
{
    public function huo(){
        echo '使用火焰刀';
    }
}

重点小无相功的适配器

继承了原来的火焰刀绝技,然后转换成了少林七十二绝技

/**
 * 小无相功的适配器
 * 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();

结果:
少林高僧:施主,你是用火焰刀,然后用小无相功强行使出的七十二绝技吧
鸠摩智:麻蛋,被看出来了

你可能感兴趣的:(设计模式)