日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

PHP常见设计模式

發(fā)布時間:2023/12/10 php 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PHP常见设计模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 簡單工廠
<?php# 簡單工廠abstract class mycoach{public function __construct(){}}class cultivatecpc extends mycoach{public function __construct(){echo "把陳培昌培養(yǎng)為搏擊教練"."\n";}}class cultivatecj extends mycoach{public function __construct(){echo "把程勁培養(yǎng)為搏擊教練"."\n";}}class martialclub {public function cultivate($name){switch($name){case 'cj':return new cultivatecj();case 'cpc':return new cultivatecpc();default:echo '培養(yǎng)一個小教練'."\n";break;}return null;}}class clubmaster{public function cultivate(){$myclub = new martialclub();$myclub->cultivate('cj');$myclub = new martialclub();$myclub->cultivate('cpc');}}$mymaster = new clubmaster();$mymaster->cultivate();

輸出結(jié)果:

把程勁培養(yǎng)為搏擊教練 把陳培昌培養(yǎng)為搏擊教練
  • ?(復(fù)雜)工廠
<?php abstract class mycoach {public function __construct(){} }class cpc extends mycoach {public function __construct(){echo "培養(yǎng)出了搏擊教練昌仔"."\n";} }class cj extends mycoach {public function __construct(){echo "培養(yǎng)出了搏擊教練勁兒弟弟"."\n"; } }interface cultivate{function cultivate(); }class cultivatecpc implements cultivate {public function cultivate(){return new cpc();} }class cultivatecj implements cultivate {public function cultivate(){return new cj();} }class coach{public function __construct(){$coach = new cultivatecpc();$coach->cultivate();$coach = new cultivatecj();$coach->cultivate();} }$littlecoach = new coach();

輸出結(jié)果:

培養(yǎng)出了搏擊教練昌仔 培養(yǎng)出了搏擊教練勁兒弟弟
  • ?觀察者模式
<?phpclass watcher{private $name;public function __construct($myname){$this->name=$myname;}public function update($food){switch($food){case '奶油蛋糕':echo $food."上桌了,".$this->name.'取出了一份紙盤子和塑料叉子,切了一塊'."\n";break;case '烤鴨':echo $food."上桌了,".$this->name.'取了張薄餅,夾了些許蔥絲,刷了些甜面醬'."\n";break;default:echo $food."上桌了,".$this->name."趕緊加了兩筷子"."\n";break;}return null;}}class watchee{private $watchlist = [];public function addwatcher($watcher){$this->watchlist[]=$watcher;}public function removewatcher($watcher){$target = array_search($watcher,$this->watchlist);$target = (int)$target;unset($this->watchlist[$target]);//echo $target."\n"; }public function loaddish($dishname){$this->notify($dishname);}public function notify($dishname){
      #這里推薦用foreach循環(huán),for循環(huán)帶來的陷阱是,如果以數(shù)字為索引,執(zhí)行removewatcher方法后,有些索引就沒了,訪問不到就會報錯     foreach($this->watchlist as $k=>$v){$this->watchlist[$k]->update($dishname);}}}$cpc = new watcher('陳培昌');$cj = new watcher('程勁');$observee = new watchee();$observee->addwatcher($cpc);$observee->addwatcher($cj);$observee->loaddish('蔥香四川涼面');$observee->removewatcher($cj);$observee->loaddish('奶油蛋糕');$xxd = new watcher('徐曉冬');$observee->addwatcher($xxd);$observee->loaddish('避風塘茄子');

輸出結(jié)果:

蔥香四川涼面上桌了,陳培昌趕緊加了兩筷子 蔥香四川涼面上桌了,程勁趕緊加了兩筷子 奶油蛋糕上桌了,陳培昌取出了一份紙盤子和塑料叉子,切了一塊 避風塘茄子上桌了,陳培昌趕緊加了兩筷子 避風塘茄子上桌了,徐曉冬趕緊加了兩筷子

?

轉(zhuǎn)載于:https://www.cnblogs.com/saintdingspage/p/11330426.html

總結(jié)

以上是生活随笔為你收集整理的PHP常见设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。