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

PHP設(shè)計(jì)模式的策略,適配器和觀察者模式詳解

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

策略模式

特點(diǎn)

定義一系列算法封裝起來(lái), 讓他們可以相互替代,策略模式提供了管理相關(guān)算法族的辦法, 提供了可以體會(huì)繼承關(guān)系的棒法, 避免使用多重條件轉(zhuǎn)移語(yǔ)句

實(shí)現(xiàn)

<?php
abstract class Strategy
{
    abstract function goSchool();
}
class Run extends Strategy
{
    public function goSchool() {
        echo "走路去學(xué)校";
    }
}
class Subway extends Strategy
{
    public function goSchool() {
        echo "地鐵去學(xué)校";
    }
}
class Bike extends Strategy
{
    public function goSchool() {
        echo "公交去學(xué)校";
    }
}
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();

適配器模式

特點(diǎn)

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

實(shí)現(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);

觀察者模式

特點(diǎn)

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

實(shí)現(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();

總結(jié)

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

 

相關(guān)文章

最新評(píng)論

疏勒县| 辽宁省| 阜新| 德昌县| 顺平县| 宽城| 读书| 昆明市| 遂川县| 苍溪县| 义马市| 南宫市| 合川市| 孝义市| 万山特区| 赤水市| 石楼县| 呼玛县| 花垣县| 军事| 恭城| 寿光市| 万源市| 大姚县| 西和县| 清原| 道孚县| 山阳县| 镇宁| 马尔康县| 肇庆市| 虞城县| 辽阳市| 德惠市| 昭平县| 荆州市| 南昌县| 教育| 丽江市| 沙洋县| 昌宁县|