亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

常用設計模式之狀態模式及其PHP實現

瀏覽:4日期:2022-09-13 09:37:14

狀態模式是一種行為型模式,它允許一個對象在其內部狀態改變時改變它的行為。對象看起來似乎修改了它的類,狀態模式變化的位置在于對象的狀態。

主要角色抽象狀態(State)角色:定義一個接口,用以封裝環境對象的一個特定的狀態所對應的行為具體狀態(ConcreteState)角色:每一個具體狀態類都實現了環境(Context)的一個狀態所對應的行為環境(Context)角色:定義客戶端所感興趣的接口,并且保留一個具體狀態類的實例。這個具體狀態類的實例給出此環境對象的現有狀態適用性一個對象的行為取決于它的狀態,并且它必須在運行時刻根據狀態改變它的行為一個操作中含有龐大的多分支的條件語句,且這些分支依賴于該對象的狀態。這個狀態通常用一個或多個枚舉常量表示。通常,有多個操作包含這一相同的條件結構。State模式模式將每一個條件分支放入一個獨立的類中。這使得你可以要所對象自身的情況將對象的狀態作為一個對象,這一對象可以不依賴于其他對象而獨立變化類圖

常用設計模式之狀態模式及其PHP實現

實例

<?phpinterface State { // 抽象狀態角色 public function handle(Context $context); // 方法示例}class ConcreteStateA implements State { // 具體狀態角色A private static $_instance = null; private function __construct() {} public static function getInstance() { // 靜態工廠方法,返還此類的唯一實例if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateA();}return self::$_instance; } public function handle(Context $context) {$context->setState(ConcreteStateB::getInstance()); } }class ConcreteStateB implements State { // 具體狀態角色B private static $_instance = null; private function __construct() {} public static function getInstance() {if (is_null(self::$_instance)) { self::$_instance = new ConcreteStateB();}return self::$_instance; } public function handle(Context $context) {$context->setState(ConcreteStateA::getInstance()); }}class Context { // 環境角色 private $_state; public function __construct() { // 默認為stateA$this->_state = ConcreteStateA::getInstance(); } public function setState(State $state) {$this->_state = $state; } public function request() {$this->_state->handle($this); }}// client$context = new Context();$context->request();$context->request();$context->request();$context->request();?>優缺點

優點

它將與特定狀態相關的行為局部化它使得狀態轉換顯示化State對象可被共享
標簽: PHP
相關文章:
主站蜘蛛池模板: 欧美专区一区二区三区 | 国产河南妇女毛片精品久久 | 久久亚洲精品一区二区三区浴池 | 91在线一区二区三区 | 亚洲第三十七页 | 精品一区二区免费视频 | 久久精品国产99久久无毒不卡 | 日本一级毛片高清免费观看视频 | 青青热久免费精品视频在首页 | 精品国产精品 | 真实男女xx00动态视频免费 | 在线色图 | 亚洲a级黄色片 | 国产成人aaa在线视频免费观看 | 欧美成人免费看片一区 | 国产成人在线免费视频 | 国产中日韩一区二区三区 | 亚洲综合久久1区2区3区 | 亚洲精品国产一区二区图片欧美 | japanhd成人快色 | xxxxx亚洲| 免费在线黄网 | 综合国产在线 | 视频一区二区三区欧美日韩 | 1000部啪啪未满十八勿入福利 | 黄色亚洲片 | 毛片在线看免费 | 丁香婷婷六月天 | 国产人成午夜免视频网站 | 日韩在线视频线视频免费网站 | 沟沟人体一区二区 | 丁香亚洲 | 嫩操影院| 亚洲v日本v欧美v综合v | 2020久久精品国产免费 | 清纯唯美亚洲综合一区 | 国产在线视频www片 国产在线视频www色 | 亚洲福利小视频 | 不卡视频一区二区三区 | 黄色的视频免费看 | 亚洲一区色|