最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP設計模式的策略,適配器和觀察者模式詳解

 更新時間:2022年03月13日 18:09:13   作者:劉遠山  
這篇文章主要為大家詳細介紹了PHP設計模式的策略,適配器和觀察者模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

策略模式

特點

定義一系列算法封裝起來, 讓他們可以相互替代,策略模式提供了管理相關算法族的辦法, 提供了可以體會繼承關系的棒法, 避免使用多重條件轉移語句

實現(xiàn)

<?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();

適配器模式

特點

需要的東西在面前,但卻不能用,而短時間又無法改造它,于是就想辦法適配

實現(xiàn)

// 適配器
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);

觀察者模式

特點

當一個對象狀態(tài)發(fā)生變化時, 依賴他的對象全部收到通知, 并主動更新。觀察者模式實現(xiàn)了低耦合, 非侵入式的通知與更新機制。

實現(xiàn)

<?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 TV<hr/>";
    }
}
class Dog1 implements Observer{
    public function watch(){
        echo "Dog1 watches TV<hr/>";
    }
}
 class People implements Observer{
    public function watch(){
        echo "People watches TV<hr/>";
    }
 }
$action = new WatchAction();
$action->register(new Cat1());
$action->register(new People());
$action->register(new Dog1());
$action->notify();

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內(nèi)容! 

 

相關文章

最新評論

乐昌市| 蓬溪县| 从化市| 昌乐县| 积石山| 西平县| 罗城| 惠安县| 海淀区| 含山县| 巩义市| 广水市| 宁阳县| 横峰县| 孝昌县| 鹿邑县| 揭东县| 河南省| 大安市| 北川| 柳江县| 尚志市| 容城县| 三亚市| 车致| 郧西县| 如皋市| 新郑市| 那曲县| 乌苏市| 台北县| 恭城| 保康县| 博客| 通许县| 神木县| 孟州市| 简阳市| 仙游县| 新田县| 镇巴县|