第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

PHP設(shè)計(jì)模式(二十)—訪問(wèn)者模式(Visitor Pattern)

標(biāo)簽:
PHP

访问者模式(Visitor Pattern) : 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

(一)为什么需要访问者模式

访问者模式能够在不更改对象的情况下向该对象添加新的功能性

(二)访问者模式 UML图
图片描述
访问者模式UML图通常是比较复杂,如果对于只有一个元素和一种访问者,我们其实也可以不用抽象元素和抽象访问者,不要objectStruct。
下图给出《PHP设计模式》中的访问者模式UML图。
图片描述

(三)简单实例

由于访问者模式的复杂,可能一开始大家看了好久也不知其所然。我也是看了好久都不知道访问者模式的意思。所以这里我只用《PHP设计模式》一书中的UML图,实现如何在不更改对象的情况下向该对象添加新的功能性。

<?php
//具体元素
class Superman{
    public $name;
    public function doSomething(){
        echo '我是超人,我会飞'.PHP_EOL;
    }
    public function accept(Visitor $visitor){
        $visitor->doSomething($this);
    }
}
//具体访问者
class Visitor{
    public function doSomething($object){
        echo '我可以返老还童到'.$object->age = 18;
    }
}
//实例化具体对象
$man = new Superman;
//使用自己的能力
$man->doSomething();
//通过添加访问者,把访问者能能力扩展成自己的
$man->accept(new Visitor);

我们可以看到,通过调用accept方法接收一个访问者,具体对象可以把访问者的doSomething能力也扩展为自己能力。当然如果你需要多个扩展能力,你可以有多个访问者。而accept方法调用访问者的dosomething方法时,传入$this是为了能使用Superman的属性和方法,使其感觉扩展完就是Superman的真正一部分。

點(diǎn)擊查看更多內(nèi)容
1人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消