设计模式8.1-适配器模式

本文通过PHP代码示例介绍适配器模式的应用。适配器模式允许不兼容接口的对象一起工作,通过创建一个适配器类,该类将源接口转换为目标接口。示例展示了如何将MonkeyInterface适配为PersonInterface。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

适配器模式:将目标接口,转化为客户期望的接口。

在我们的示例中,目标接口是MonkeyInterface,
但是客户(Test类的run方法)期望的是PersonInterface,即客户期望处理的Person。
我们的处理方式是在客户和目标接口中间加一个适配器(MonkeyAdapter),客户使用的是适配器实例,适配器
实例最终会将相应请求委托给它持有的目标对象来处理(MonkeyAdapter中的$monkey属性)


<?php
interface MonkeyInterface
{
    public function jump();
    public function roar();//吼叫
}

interface PersonInterface
{
    public function walk();
    public function speak();
}


class LittleMonkey implements MonkeyInterface
{
    public function jump()
    {
        echo "jump jump<br>\n";
    }

    public function roar()
    {
        echo "ohoooooo..<br>\n";
    }
}


class LittleBoy implements PersonInterface
{
    public function walk()
    {
        echo "I am walking<br>\n";
    }

    public function speak()
    {
        echo "I am speaking<br>\n";
    }
}


class MonkeyAdapter implements PersonInterface
{
    private $monkey;

    public function __construct(MonkeyInterface $monkey)
    {
        $this->monkey = $monkey;
    }

    public function walk()
    {
        $this->monkey->jump();
    }

    public function speak()
    {
        $this->monkey->roar();
    }
}


class Test
{
    public function run()
    {
        $person = new LittleBoy();
        $person->walk();
        $person->speak();

        $monkey = new LittleMonkey();
        $monkeyAdapter = new MonkeyAdapter($monkey);

        $monkeyAdapter->walk();
        $monkeyAdapter->speak();
    }
}


$test = new Test();

$test->run();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值