欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

策略模式

特點

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

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

適配器模式

特點

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

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

觀察者模式

特點

當(dāng)一個對象狀態(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();

總結(jié)

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

 

相關(guān)文章

  • 利用swoole+redis實現(xiàn)股票和區(qū)塊鏈服務(wù)

    利用swoole+redis實現(xiàn)股票和區(qū)塊鏈服務(wù)

    這篇文章主要給大家介紹了關(guān)于利用swoole+redis實現(xiàn)股票和區(qū)塊鏈服務(wù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)下吧。
    2017-09-09
  • PHP SPL標(biāo)準(zhǔn)庫中的常用函數(shù)介紹

    PHP SPL標(biāo)準(zhǔn)庫中的常用函數(shù)介紹

    這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫中的常用函數(shù)介紹,本文著重講解了spl_autoload_extensions()、spl_autoload_register()、spl_autoload()三個函數(shù),需要的朋友可以參考下
    2015-05-05
  • PHP日期時間函數(shù)的高級應(yīng)用技巧

    PHP日期時間函數(shù)的高級應(yīng)用技巧

    PHP的日期時間函數(shù)date()中介紹了PHP日期時間函數(shù)的簡單用法,這類將介紹更多的函數(shù)來豐富我們的應(yīng)用。
    2009-05-05
  • PHP抽象類與接口的區(qū)別實例詳解

    PHP抽象類與接口的區(qū)別實例詳解

    這篇文章主要介紹了PHP抽象類與接口的區(qū)別,結(jié)合實例形式分析了php抽象類與接口的概念、區(qū)別、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-05-05
  • PHP中執(zhí)行cmd命令的方法

    PHP中執(zhí)行cmd命令的方法

    這篇文章主要介紹了PHP中執(zhí)行cmd命令的方法,需要的朋友可以參考下
    2014-10-10
  • PHP獲取QQ達(dá)人QQ信息的方法

    PHP獲取QQ達(dá)人QQ信息的方法

    這篇文章主要介紹了PHP獲取QQ達(dá)人QQ信息的方法,實例分析了php獲取QQ信息的原理與對應(yīng)的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • PHP設(shè)計模式之迭代器模式淺析

    PHP設(shè)計模式之迭代器模式淺析

    迭代器(Iterator)模式,它在一個很常見的過程上提供了一個抽象:位于對象圖不明部分的一組對象(或標(biāo)量)集合上的迭代。迭代有幾種不同的具體執(zhí)行方法:在數(shù)組屬性,集合對象,數(shù)組,甚至一個查詢結(jié)果集之上迭代
    2023-04-04
  • php實現(xiàn)收發(fā)郵件的方法詳解

    php實現(xiàn)收發(fā)郵件的方法詳解

    這篇文章主要為大家詳細(xì)介紹了php實現(xiàn)收發(fā)郵件的多種方法總結(jié),文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,感興趣的小伙伴可以跟隨小編一起了解下
    2023-11-11
  • PHP 輸出緩沖控制(Output Control)詳解

    PHP 輸出緩沖控制(Output Control)詳解

    本文主要介紹PHP 輸出緩沖控制,這里提供了詳細(xì)的相關(guān)資料及簡單示例代碼,幫助大家學(xué)習(xí)參考,有興趣的小伙伴可以參考下
    2016-08-08
  • php微信公眾開發(fā)之獲取周邊酒店信息的方法

    php微信公眾開發(fā)之獲取周邊酒店信息的方法

    這篇文章主要介紹了php微信公眾開發(fā)之獲取周邊酒店信息的方法,涉及針對微信公眾平臺關(guān)于地理信息的應(yīng)用技巧,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12

最新評論