亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP單件模式結合命令鏈模式

2020-03-24 17:06:15
字體:
來源:轉載
供稿:網友
初學者對于設計模式肯定存在著很多不明白之處,今天剛好周末,就抽出來點時間寫了一個單件模式結合命令鏈模式打造系統(tǒng)核心的文章,可能對于部分人來說,文章內容過于淺顯,這是送給初學者的教程,因為時間比較緊(要陪老婆逛街,呵呵),其中出現了設計不規(guī)范的,代碼書寫不規(guī)范的,bug等等還望各路大俠指出來,方便大家共同進步.本人水平有限.^_^相信大家都已經讀過很多關于在php中應用設計模式的書籍或是文章,但是很少有直接給予實例,大部分看完之后有種迷迷糊糊的感覺,如果沒有項目實踐,很難將設計模式部分弄清楚.為避免代碼過于復雜.沒有添加異常處理等內容.
單件模式以及命令鏈模式的基礎知識,大家自己google一下.不詳細講了.下面直接看實例: ?php
/*
*@author:NoAngels
*@time:08年08月30日
*/
interface IRunAction{
//獲取類中定義的可以被APP中run的方法
html' target='_blank'>static function LoadActions();
//類中的入口函數調用該類中其他函數用
function runAction($action, $args);
}
/*
*APP類系統(tǒng)的核心部分
*/
class APP{
static private $__instance = null;
static private $__commands = array();
static private $__flag = 1;
private function __construct(){}
//單件模式設計獲取該類的唯一實例
static function Load(){
if(self::$__instance == null) self::$__instance = new APP;
return self::$__instance;
}
//添加命名到APP的$__instance中每次添加新命令的時候檢查是否之前已經添加過一個該類的實例
//如果有就忽略操作如果沒有就添加進來
public function addCommand($cmdName){
foreach(self::$__commands as $cmd){
if(strtolower(get_class($cmd)) == strtolower(get_class($cmdName))){
self::$__flag = 0;
break;
}
}
if(self::$__flag == 1) self::$__commands[] = $cmdName;
self::$__flag = 1;
}
//命令鏈模式設計的核心部分調用實例的入口函數
//首先檢查是否在類中允許調用該操作如果沒有就提示未定義操作退出
public function runCommand($action, $args){
self::$__flag = 0;
foreach(self::$__commands as $cmd){
if(in_array($action, $cmd- LoadActions())){
self::$__flag = 1;
$cmd- runAction($action, $args);
}
}
if(self::$__flag == 0){
self::$__flag = 1;
exit( undefined action by action : $action
}
}
//刪除某個類的實例,只要指定類的名字即可
public function removeCommand($className){
foreach(self::$__commands as $key= $cmd){
if(strtolower(get_class($cmd)) == strtolower($className)){
unset(self::$__commands[$key]);
}
}
}
//供大家測試用看看是否添加以及刪除成功
public function viewCommands(){
echo(count(self::$__commands));
}
}
//類User實現接口IRunAction
class User implements IRunAction{
//定義可以調用的操作
static private $__actions = array('addUser', 'modifyUser', 'removeUser');
//獲取可以調用的操作,實際過程中不要直接就愛你個$__actions設計成public調用
//而應該設計一個LoadActions函數獲取$__actions的值
static public function LoadActions(){
return self::$__actions;
}
//運行指定函數
public function runAction($action, $args){
//不明白這個函數使用的可以參看手冊
call_user_func(array($this,$action), $args);
}
//測試函數而已
protected function addUser($name){
echo($name);
}
}
//類Test同類User
class Test implements IRunAction{
static private $__actions = array('addTest', 'modifyTest', 'removeTest');
static public function LoadActions(){
return self::$__actions;
}
public function runAction($action, $args){
call_user_func(array($this,$action), $args);
}
protected function addTest($name){
echo($name);
}
}
//以下是測試代碼
APP::Load()- addCommand(new User);
APP::Load()- addCommand(new User);
APP::Load()- addCommand(new User);
APP::Load()- addCommand(new User);
APP::Load()- runCommand('addUser', 'NoAngels');
APP::Load()- addCommand(new Test);
APP::Load()- runCommand('addTest', null);APP類用單件模式設計,它是系統(tǒng)的核心部分.相信大家看代碼就知道了Load方法是載入APP類實例,相當于有些書籍中的getInstance靜態(tài)方法.他有addCommand,runCommand,removeCommand三個public方法.runCommand是核心部分.同時也是命令鏈模式的核心啟動程序.具體實現請看源代碼.代碼寫的已經很清楚了,就此不再贅述.
類User,Test實現了接口IRunAction,這兩個類中都定義了一個靜態(tài)私有變量$__actions,為一數組,其中包含了可以被APP的runCommand函數調用的操作.下面是系統(tǒng)的運行流程:APP啟動
-------addCommand,將將要運行的操作所屬的類添加到APP中.如果添加的類是用單件模式設計的.可以如下添加addCommand(SingletonClass::Load()).否則可以如下調addCommand(new someClass)
-------runCommand.運行操作.比如在User類中有一操作addUser.我直接可以啟用runCommand($acttion, $args).在APP中循環(huán)遍歷$__commands數組,如果其中某個類的實例擁有該操作,就調用該實例的runAction函數.如果你沒有將某個類的實例利用addCommand添加進來,就提示未定義操作,退出.
在類User和類Test中的runAction調用了call_user_func這個非常使用的函數.調用該類中對應函數.提示:講解與實例部分就到此了,具體你怎么理解,以及如何將該思想利用,就看你自己的理解,凡事必須自己動手才行.(ps:可以做成框架中的單一入口文件,實不實現MVC就看你自己是怎么想的了.)實際運行效果如下:限于語文水平,有什么不理解的可以聯(lián)系我.
以后有時間了再給大家寫點文章.html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
红杏一区二区三区| 成人免费视频一区二区| 亚洲色图都市激情| 亚洲一区二区三区日本久久九| 三级在线免费看| 欧美成人高清视频在线观看| 免费观看在线综合| 国产理论片在线观看| 一本色道久久综合亚洲91| 精品91免费| 三级黄色录像视频| 亚洲一二三四在线观看| 中文字幕高清20页| 成人免费观看在线网址| 国产精品国产三级国产普通话99| 欧美成人免费| 日韩在线观看免费全| 国产91综合一区在线观看| 欧美在线视频一区二区三区| 亚洲成人a级片| 婷婷亚洲图片| 精品电影一区二区三区| 精品欧美乱码久久久久久| 精品亚洲国内自在自线福利| 免费在线成人激情电影| 多人啪嗒啪嗒在线观看免费| 国产成人av影视| 午夜精品在线视频一区| 我不卡神马影院| 成人免费视频国产在线观看| 欧美精品一区二区三| 色图欧美色图| 国产欧美日韩亚洲一区二区三区| 欧美亚洲另类小说| 亚洲第一福利网站| 国内揄拍国内精品久久| 在线观看毛片av| 日韩视频在线播放| 先锋av资源在线| 秋霞网一区二区| 亚洲精品国产第一综合99久久| 天使と恶魔の榨精在线播放| 岛国精品一区二区| 精品在线欧美视频| 日韩精品99| 无码人妻aⅴ一区二区三区| 午夜精品影视国产一区在线麻豆| www.com.cn成人| 成人精品视频.| 精品人妻伦九区久久aaa片| 欧美日韩亚洲国产综合| 欧美图片第一页| 一区二区三区| 欧美xxxx黑人xyx性爽| 久久久精品亚洲| 亚洲视频国产| 免费黄色成人| 中国精品一区二区| 色综合天天狠天天透天天伊人| 久久艹在线视频| 欧美一级bbbbb性bbbb喷潮片| 久久久久久久久综合| 欧美视频精品在线观看| 日本亚洲三级在线| 一起操在线视频| 欧美午夜性色大片在线观看| 成人国产精品入口免费视频| 搜索黄色一级片| 亚洲一区二区免费视频软件合集| 亚洲超碰在线| 日本www高清视频| 一区二区三区小说| 午夜精品久久久99热福利| 亚洲第一中文字幕在线观看| 波多野结衣a v在线| 亚洲少妇18p| 精品国免费一区二区三区| 蜜臀av无码一区二区三区| 狠狠色丁香九九婷婷综合五月| 动漫av网站免费观看| 欧美日韩精品免费观看| 国产精品都在这里| 狼人精品一区二区三区在线| 国产免费一区二区三区最新不卡| 免费精品视频一区| 中文字幕在线观看精品| 亚洲在线视频一区二区| 国产成人自拍一区| 久久久久久国产免费a片| 日本午夜精品一区二区三区电影| 最近2019年中文视频免费在线观看| 欧美va亚洲va在线观看蝴蝶网| 免费观看成人在线| 中文字幕一区二区三区视频| 欧美日韩网站| 在线视频欧美日韩| 亚洲欧美日韩系列| 日韩午夜视频在线| 国产成人精品一区二区色戒| 亚洲特黄一级片| 国产在线xxx| 亚洲网站视频在线观看| 一区二区伦理片| 亚洲视频中文字幕在线观看| 亚洲专区**| 免费av观看网址| 欧美123区| 黄色一级片av| ...xxx性欧美| 中文字幕有码热在线视频| 人妻少妇精品一区二区三区| 97影院在线观看| 国产三区精品| 国产成人美女视频| 日本一区二区三区四区在线视频| 久久久久久久久亚洲精品| 国产蜜臀97一区二区三区| 欧美一级播放| 极品束缚调教一区二区网站| 国产成人av在线播放| 欧美精品成人一区二区三区四区| 亚洲裸体俱乐部裸体舞表演av| 天天视频天天爽| 国产一区欧美一区| 色网在线播放| 三区视频在线观看| 欧美性猛交xxxx黑人交| 天天躁日日躁狠狠躁欧美巨大小说| 小说区图片区综合久久亚洲| 在线看欧美视频| 国产91一区二区三区| 97精品久久人人爽人人爽| 一道本视频在线观看| www.日本高清视频| 国产精品18久久久| 日韩国产成人| 最近2019年日本中文免费字幕| 中文字幕免费高清电视剧网站在线观看| 久久女人天堂| 欧美性受xxxx黑人猛交| 窝窝社区一区二区| 亚洲裸色大胆大尺寸艺术写真| 中文不卡1区2区3区| 亚洲黄色成人| eeuss影院www在线| 黄色aaaaaa| 综合分类小说区另类春色亚洲小说欧美| 在线播放国产精品二区一二区四区| 精品盗摄一区二区三区| 国产日本亚洲高清| 免费不卡亚洲欧美| www男人的天堂| 欧美夫妻性生活| 国产精品无码专区av免费播放| 日韩一区二区三区高清免费看看| 亚洲成人免费| 日韩一区二区三区av| 中文字幕一区二区三区免费视频| 欧美少妇另类| 国产欧美久久久久久| 农村妇女一区二区| 五福影院新址进入www1378| 在线电影福利片| 久久99精品久久久久子伦| 精品久久国产老人久久综合| 欧美成人精品欧美一级| 国产三级欧美三级日产三级99| 亚洲男男gay视频| 久做在线视频免费观看| www天堂网| 麻豆传媒在线免费| 欧美一级日韩免费不卡| 91成人在线免费| 成人免费视频视频| 国产精品嫩草av| 国产精品国产三级国产aⅴ入口| 97在线视频精品| 男女啊啊啊视频| 久久黄色级2电影| 性欧美videossex精品| 色综合久久久久久| 久草在线资源站手机版| 黑人巨大精品欧美一区二区奶水| 51成人做爰www免费看网站| 天堂av一区二区三区在线播放| 精品成人免费自拍视频| 久久伊人资源站| 午夜69成人做爰视频| 日本免费观看视| 国产www免费| 女生裸体视频网站免费观看| 精品噜噜噜噜久久久久久久久试看| 国产精品视频中文字幕91| 美女尤物在线视频| 成熟老妇女视频| 日本高清xxxx| 国产一级黄色片免费| 色综合久久综合网欧美综合网| 日韩亚洲欧美中文三级| 蜜芽一区二区三区| 一区二区三区在线电影| 欧美黄色三级网站| 亚洲一区在线观看免费观看电影高清| 女人体1963| 日本调教视频在线观看| 无吗不卡中文字幕| 国产精品国产精品88| 国产欧美日韩中文字幕| 77导航福利在线| 欧美视频三区在线播放| 91精品久久香蕉国产线看观看| 国产午夜精品视频一区二区三区| 麻豆久久久久久久久久| 狠狠色综合播放一区二区| 男人通一通女人的下水道| 亚洲午夜精品久久久久久app| 91看片在线播放| 欧美精品一区免费| 欧美孕妇性xx| av一级亚洲| 国产91成人在在线播放| 久草影视在线| av在线收看| 97精品一区二区视频在线观看| 日本高清无吗v一区| 91人成网站www| 天天性天天草| 少妇丰满尤物大尺度写真| 911精品美国片911久久久| 美日韩精品视频| 五月综合激情婷婷六月色窝| 天天色天天草天天射| 57pao国产成人免费| 欧美天堂社区| 女同互忝互慰dv毛片观看| 97人人爽人人| 日日躁夜夜躁人人揉av五月天| 性网爆门事件集合av| 九九精品在线观看| 99re热这里只有精品免费视频| 欧美专区第二页| 欧美精品videosbestsex另类| www.亚洲欧美| 麻豆传媒在线观看| 国产一区二区三区四区五区| 欧美国产亚洲精品| 三级黄色小视频| 亚洲影院高清在线| 久久久久久久久久一区二区三区| 成人aaaa免费全部观看| 日本午夜视频| 人与牲动交xxxxbbbb高清| 一级黄色a视频| 日本黄色不卡视频| 国产精品特级毛片一区二区三区| 国产香蕉在线观看| 亚洲精品色婷婷福利天堂| 国产一区二区久久久久| 成人一区二区三区| 久久久久久久爱| 欧美久久精品| 亚欧精品在线| 九色自拍视频在线观看| 日韩中文字幕在线| 亚洲五月六月| 亚洲第一区在线| 欧美小视频在线观看| 精品二区视频| 亚洲综合色视频在线观看| 又黄又爽在线免费观看| 日本一区午夜艳熟免费| 久久久久国产精品免费免费搜索| 欧美午夜视频在线| 日本一区二区免费看| 欧美电影在线观看免费| 中国人体摄影一区二区三区| 色青青草原桃花久久综合| 久久免费少妇高潮久久精品99| 亚洲肉体裸体xxxx137| 国产精品成人一区二区三区夜夜夜| 亚洲欧美综合另类| 四虎永久在线精品免费一区二区| 91精品啪在线观看麻豆免费| 久久性生活视频| 欧美一区二区三区四区久久| 国产精品裸体一区二区三区| 九九精品在线| 国产精品videossex| 久久精品一二三区| av日韩久久| 久久亚洲精品中文字幕| 国产欧美一区二区精品性色| 日韩中文字幕1| 亚洲精品综合| 91麻豆精品一区二区三区| 亚洲97av| 欧美搞黄网站| 日韩欧美亚洲另类制服综合在线| 国产精品女视频| 国产精品久久婷婷六月丁香| 成人免费视频网站在线观看| 青草伊人久久| 韩国国内大量揄拍精品视频| 久久精品av麻豆的观看方式| 天堂资源中文在线| 国产热re99久久6国产精品| 国产18无套直看片| 国产传媒久久久| 亚洲午夜成aⅴ人片| 老熟妇高潮一区二区三区| 色老板在线观看| 一区二区精品免费视频| 日韩一区二区免费在线观看| 欧美日韩一区国产| 九色91偷拍| 欧洲精品中文字幕| 欧美午夜视频一区二区| 黄网站app在线观看大全免费视频| 精品国产欧美一区二区五十路| 国产日产精品一区二区三区的介绍| 国产精品久久久久久久久电影网| 色偷偷成人一区二区三区91| 欧美床上激情在线观看| 激情久久久久久久| 国产亚洲精品久久久久久豆腐| 678在线观看视频| 精品国产鲁一鲁****| 99国产精品国产精品毛片|