大话php设计模式视频,大话PHP设计模式
工廠模式
用工廠方法或者類來實(shí)例化對象,而不是直接new。
首先我們需要?jiǎng)?chuàng)建一個(gè)工廠類,比如Factory.php。如果不使用工廠模式的,我們需要一個(gè)對象的時(shí)候通常需要
new Inexistence\girlfriend();
然而我們一般不只在一個(gè)地方需要這個(gè)對象,這個(gè)時(shí)候一旦對象發(fā)生變更,或者對象的某些屬性發(fā)生變化,我們就需要一個(gè)一個(gè)的來改,非常麻煩。這個(gè)時(shí)候我們引入工廠類,在Factory.php中
然后每次調(diào)用時(shí)$GF1 = Imagination\Factory::getGirlfriend()就可以避免四處修改的問題。
在Laravel中這樣的設(shè)計(jì)模式很常見。
單例模式
即確保某個(gè)類的對象僅被創(chuàng)建一次。比如我們在database里面存了很多女生的聯(lián)系方式,如果我們用pdo的話每次查找都會(huì)new一個(gè)對象,勢必會(huì)造成資源的浪費(fèi)。所以我們就在connect之前做個(gè)判斷。
這里面比較關(guān)鍵的地方在于聲明了一個(gè)私有變量和私有的構(gòu)造方法,然后再在這個(gè)類里面new自己,就避免了在其他地方重復(fù)實(shí)例化的問題。這個(gè)時(shí)候我們已經(jīng)沒法直接new Database了,我們只能通過調(diào)用get Instance方法來建立連接。這里順帶講一下PHP的鏈?zhǔn)讲僮鞯膶?shí)現(xiàn)。在很多框架比如用完26個(gè)字母就不知道怎么辦的thinkPHP和Laravel中對數(shù)據(jù)庫的操作可以使用鏈?zhǔn)讲僮?#xff0c;這樣可以使代碼更為優(yōu)雅。具體實(shí)現(xiàn)就是使用return this;,這樣就可以用where($where)->order($order)->limit(1);來代替多行語句。
Laravel使用了三目運(yùn)算符來代替if,顯得更為優(yōu)雅。
注冊模式
解決全局共享和交換對象的問題。實(shí)際上就是把實(shí)例好的對象放進(jìn)一個(gè)數(shù)組,在任何地方要用的時(shí)候就去出來。就好比有一課樹,我們把new好的$GF1,$GF2。。。一個(gè)一個(gè)掛上去,要用的時(shí)候再取出來。
unset在PHP中是關(guān)鍵字,所以用_unset代替。這樣的話我們就要在工廠類中用一下Register::set()方法,把new好的對象掛樹上。為了調(diào)用方便,Register中還需要一個(gè)get()方法來取對象。
這樣我們也就不用再去使用單例模式了,直接從注冊器中取Register::get()。
Laravel中用了更優(yōu)雅的方式。
總結(jié)
以上是生活随笔為你收集整理的大话php设计模式视频,大话PHP设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jquery mobile 解决IOS9
- 下一篇: hadoop为什么出现