摘要:總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類(lèi)創(chuàng)建型模式共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。優(yōu)點(diǎn)一實(shí)例控制單例模式會(huì)阻止其他對(duì)象實(shí)例化其自己的單例對(duì)象的副本,從而確保所有對(duì)象都訪(fǎng)問(wèn)唯一實(shí)例。
總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類(lèi):
創(chuàng)建型模式---共五種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)型模式---共七種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式---共十一種:策略模式、模板方法模式、觀察者模式、迭代子模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪(fǎng)問(wèn)者模式、中介者模式
下面,簡(jiǎn)單介紹幾種設(shè)計(jì)模式:
單例模式
單例模式,是一種常用的軟件設(shè)計(jì)模式。在它的核心結(jié)構(gòu)中只包含一個(gè)被稱(chēng)為單例的特殊類(lèi)。通過(guò)單例模式可以保證系統(tǒng)中一個(gè)類(lèi)只有一個(gè)實(shí)例。即一個(gè)類(lèi)只有一個(gè)對(duì)象實(shí)例。
優(yōu)點(diǎn):
一、實(shí)例控制:?jiǎn)卫J綍?huì)阻止其他對(duì)象實(shí)例化其自己的單例對(duì)象的副本,從而確保所有對(duì)象都訪(fǎng)問(wèn)唯一實(shí)例。
二、靈活性:因?yàn)轭?lèi)控制了實(shí)例化過(guò)程,所以類(lèi)可以靈活更改實(shí)例化過(guò)程。
缺點(diǎn)
一、開(kāi)銷(xiāo)
雖然數(shù)量很少,但如果每次對(duì)象請(qǐng)求引用時(shí)都要檢查是否存在類(lèi)的實(shí)例,將仍然需要一些開(kāi)銷(xiāo)。可以通過(guò)使用靜態(tài)初始化解決此問(wèn)題。
二、可能的開(kāi)發(fā)混淆
使用單例對(duì)象(尤其在類(lèi)庫(kù)中定義的對(duì)象)時(shí),開(kāi)發(fā)人員必須記住自己不能使用new關(guān)鍵字實(shí)例化對(duì)象。因?yàn)榭赡軣o(wú)法訪(fǎng)問(wèn)庫(kù)源代碼,因此應(yīng)用程序開(kāi)發(fā)人員可能會(huì)意外發(fā)現(xiàn)自己無(wú)法直接實(shí)例化此類(lèi)。
config = $config; echo "我已經(jīng)被實(shí)例化了-"; } //防止克隆對(duì)象 private function __clone(){} public static function getInstance($config){ //判斷$instance是否是Log的對(duì)象 //沒(méi)有則創(chuàng)建則創(chuàng)建 if (!self::$instance instanceof self) { self::$instance = new self($config); } return self::$instance; } public function getName(){ echo $this->config; } } $db1 = Log::getInstance("實(shí)例化1"); $db1->getName(); echo "
"; $db2 = Log::getInstance("實(shí)例化2"); $db2->getName(); ?> 運(yùn)行結(jié)果: 我已經(jīng)被實(shí)例化了-實(shí)例化1 實(shí)例化2
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/29903.html
摘要:分別為適配器模式,裝飾器模式,代理模式,外觀模式,橋接模式,組合模式,享元模式。設(shè)計(jì)模式五適配器模式適配器模式將某個(gè)對(duì)象的接生成器和協(xié)程的實(shí)現(xiàn)在這篇文章中,作者針對(duì)那些比較難以理解的概念,以一個(gè)更為通俗的方式去講明白。。 PHP 源碼注解 PHP 的詳細(xì)源碼注解 PHP 字符串操作整理 一些有關(guān)字符串的常用操作。 Redis 常見(jiàn)七種使用場(chǎng)景 (PHP 實(shí)戰(zhàn)) 這篇文章主要介紹利用 R...
摘要:接下來(lái)會(huì)對(duì)其中五個(gè)比較常見(jiàn)的運(yùn)行模式進(jìn)行說(shuō)明。模式是目前主流的服務(wù)運(yùn)行模式,擁有高效可靠的性能,推薦大家使用。由于微軟的排他性,只能運(yùn)行于環(huán)境。 SAPI 這里所說(shuō)的 PHP 運(yùn)行模式, 其實(shí)指的是 SAPI (Server Application Programming Interface,服務(wù)端應(yīng)用編程端口 )。SAPI 為 PHP 提供了一個(gè)和外部通信的接口, PHP 就是通過(guò)這...
摘要:簡(jiǎn)單字符串緩存實(shí)戰(zhàn)完整實(shí)戰(zhàn)種設(shè)計(jì)模式設(shè)計(jì)模式是面向?qū)ο蟮淖罴褜?shí)踐成為專(zhuān)業(yè)程序員路上用到的各種優(yōu)秀資料神器及框架成為一名專(zhuān)業(yè)程序員的道路上,需要堅(jiān)持練習(xí)學(xué)習(xí)與積累,技術(shù)方面既要有一定的廣度,更要有自己的深度。 微型新聞系統(tǒng)的開(kāi)發(fā)(PHP 5.4 + MySQL 5.5) 微型新聞系統(tǒng)的開(kāi)發(fā)(PHP 5.4 + MySQL 5.5) 九個(gè)很有用的 PHP 代碼 php 代碼 國(guó)內(nèi)值得關(guān)注的...
摘要:的機(jī)器學(xué)習(xí)庫(kù)的機(jī)器學(xué)習(xí)庫(kù),包括算法交叉驗(yàn)證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來(lái)的大會(huì)上,她將和大家分享在機(jī)器學(xué)習(xí)領(lǐng)域的全新可能。入門(mén)總結(jié)入門(mén)相關(guān),如安裝配置基本使用等。 基于 Swoole 開(kāi)發(fā) PHP 擴(kuò)展 Swoole-1.9.7 增加了一個(gè)新特性,可以基于 Swoole 使用 C++ 語(yǔ)言開(kāi)發(fā)擴(kuò)展模塊,在擴(kuò)展模塊中可以注冊(cè) PHP 內(nèi)置函數(shù)和類(lèi)。現(xiàn)在可以基于 Swoole 來(lái)編寫(xiě) PHP ...
摘要:當(dāng)客戶(hù)端請(qǐng)求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。子進(jìn)程完成處理后將標(biāo)準(zhǔn)輸出和錯(cuò)誤信息從同一連接返回。子進(jìn)程接著等待并處理來(lái)自進(jìn)程管理器運(yùn)行在中的下一個(gè)連接。 目前常見(jiàn)的4種PHP運(yùn)行模式 CGI通用網(wǎng)關(guān)接口模式 FAST-CGI模式 CLI命令行模式 模塊模式 運(yùn)行模式 CGI通用網(wǎng)關(guān)接口模式 每有一個(gè)用戶(hù)請(qǐng)求,都會(huì)先要?jiǎng)?chuàng)建cgi的子進(jìn)程,然后處理請(qǐng)求,處理完后結(jié)束這個(gè)子進(jìn)程...
摘要:話(huà)說(shuō)當(dāng)下一共有種運(yùn)行模式,分別是和模塊模式。使用,全稱(chēng)進(jìn)程管理器進(jìn)行管理。工作原理啟動(dòng)時(shí)載入進(jìn)程管理器進(jìn)程管理器自身初始化,啟動(dòng)多個(gè)解釋器進(jìn)程并等待來(lái)自的連接當(dāng)客戶(hù)端請(qǐng)求到達(dá)時(shí),進(jìn)程管理器選擇并連接到一個(gè)解釋器。 我們知道 workerman 程序需要在php-cli模式下運(yùn)行,也就是命令行模式,這塊我們有必要了解一下。 話(huà)說(shuō)PHP當(dāng)下一共有4種運(yùn)行模式,分別是CGI、FastCGI、...
閱讀 2949·2021-11-23 09:51
閱讀 1666·2021-10-15 09:39
閱讀 1056·2021-08-03 14:03
閱讀 2882·2019-08-30 15:53
閱讀 3437·2019-08-30 15:52
閱讀 2487·2019-08-29 16:17
閱讀 2788·2019-08-29 16:12
閱讀 1647·2019-08-29 15:26