首页后端开发其他后端知识PHP策略模式、适配器模式和观察者模式如何实现

PHP策略模式、适配器模式和观察者模式如何实现

时间2024-03-25 16:18:03发布访客分类其他后端知识浏览273
导读:这篇文章主要给大家介绍“PHP策略模式、适配器模式和观察者模式如何实现”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考了解一下,希望这篇“PHP策略模式、适配器模式和观察者模式如何实现...
这篇文章主要给大家介绍“PHP策略模式、适配器模式和观察者模式如何实现”的相关知识,下文通过实际案例向大家展示操作过程,内容简单清晰,易于学习,有这方面学习需要的朋友可以参考了解一下,希望这篇“PHP策略模式、适配器模式和观察者模式如何实现”文章对大家有所帮助。

策略模式

特点

定义一系列算法封装起来, 让他们可以相互替代,策略模式提供了管理相关算法族的办法, 提供了可以体会继承关系的棒法, 避免使用多重条件转移语句

实现

?php
abstract class Strategy
{
    
    abstract function goSchool();

}

class Run extends Strategy
{

    public function goSchool() {
    
        echo "走路去学校";

    }

}

class Subway extends Strategy
{

    public function goSchool() {
    
        echo "地铁去学校";

    }

}

class Bike extends Strategy
{

    public function goSchool() {
    
        echo "公交去学校";

    }

}

class GoSchoolContext
{
    
    protected $_stratege;

    public function __construct($stratege) {
    
        $this->
    _stratege = $stratege;

    }

    public function goSchool()
    {
    
        $this->
    _stratege->
    goSchool();

    }

}
    
$traget = new Run();
    
$obj = new GoSchoolContext($traget);
    
$obj->
    goSchool();

适配器模式

特点

需要的东西在面前,但却不能用,而短时间又无法改造它,于是就想办法适配

实现

// 适配器
interface Charget
{
    
    public function putCharget();

}

class China implements Charget
{
    
    private $v = 220;

    public function putCharget()
    {
    
        return $this->
    v;

    }

}

class Adper extends China
{

    public function putCharget() {
    
        return parent::putCharget() / 2 + 10;

    }

}

class Phone
{

    public function charge(Charget $charge)
    {
    
        if ($charge->
putCharget() != "120") {
    
            echo "不能充电";

        }
 else {
    
            echo "能充电";

        }

    }

}
    
$china = new China();
    
$adper = new Adper();
    
$phone = new Phone();
    
$phone->
    charge($adper);

观察者模式

特点

当一个对象状态发生变化时, 依赖他的对象全部收到通知, 并主动更新。观察者模式实现了低耦合, 非侵入式的通知与更新机制。

实现

?php
// 主题接口
interface Subject
{
    
    public function register(Observer $observer);

}

// 观察者接口
interface Observer
{
    
    public function watch();

}

// 主题
class WatchAction implements Subject
{
    
    public $_observers = [];

    public function register(\Observer $observer) {
    
        $this->
    _observers[] = $observer;

    }

    public function notify()
    {
    
        foreach($this->
_observers as $object) {
    
            $object->
    watch();

        }

    }

}

// 观察者
class Cat1 implements Observer{

    public function watch(){
    
        echo "Cat1 watches TVhr/>
    ";

    }

}

class Dog1 implements Observer{

    public function watch(){
    
        echo "Dog1 watches TVhr/>
    ";

    }

}

 class People implements Observer{

    public function watch(){
    
        echo "People watches TVhr/>
    ";

    }

 }
    
$action = new WatchAction();
    
$action->
    register(new Cat1());
    
$action->
    register(new People());
    
$action->
    register(new Dog1());
    
$action->
    notify();
    



以上就是关于PHP策略模式、适配器模式和观察者模式如何实现的介绍啦,需要的朋友可以参考上述内容,希望对大家有帮助,想要了解更多,欢迎关注网络,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP策略模式、适配器模式和观察者模式如何实现
本文地址: https://pptw.com/jishu/652894.html
laravel队列Queue方法如何应用呢? PHP中怎样实现其他进制转换十进制,方法是啥?

游客 回复需填写必要信息