自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你是否了解PHP設(shè)計(jì)模式

開(kāi)發(fā) 后端
PHP設(shè)計(jì)模式不僅代表著更快開(kāi)發(fā)健壯軟件的有用方法,而且還提供了以友好的術(shù)語(yǔ)封裝大型理念的方法,文章有詳細(xì)的介紹。

設(shè)計(jì)模式給我?guī)Я撕芏嗪锰?,在JAVA中有20多種的設(shè)計(jì)模式,而在PHP中也有五種常見(jiàn)的設(shè)計(jì)模式,下面我們就詳細(xì)的看看PHP設(shè)計(jì)模式中的工廠模式吧。PHP設(shè)計(jì)模式 一書將設(shè)計(jì)模式引入軟件社區(qū),該書的作者是 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides Design(俗稱 “四人幫”)。所介紹的設(shè)計(jì)模式背后的核心概念非常簡(jiǎn)單。

#T#經(jīng)過(guò)多年的軟件開(kāi)發(fā)實(shí)踐,Gamma 等人發(fā)現(xiàn)了某些具有固定設(shè)計(jì)的模式,就像建筑師設(shè)計(jì)房子和建筑物一樣,可以為浴室的位置或廚房的構(gòu)造方式開(kāi)發(fā)模板。使用這些模板或者說(shuō)設(shè)計(jì)模式意味著可以更快地設(shè)計(jì)更好的建筑物。同樣的概念也適用于軟件。設(shè)計(jì)模式不僅代表著更快開(kāi)發(fā)健壯軟件的有用方法,而且還提供了以友好的術(shù)語(yǔ)封裝大型理念的方法。例如,您可以說(shuō)您正在編寫一個(gè)提供松散耦合的消息傳遞系統(tǒng),也可以說(shuō)你正在編寫名稱為觀察者 的模式。

用較小的示例展示模式的價(jià)值是非常困難的。這往往有些大材小用的意味,因?yàn)槟J綄?shí)際上是在大型代碼庫(kù)中發(fā)揮作用的。本文不展示大型應(yīng)用程序,所以您需要思索的是在您自己的大型應(yīng)用程序中應(yīng)用示例原理的方法 —— 而不是本文演示的代碼本身。這不是說(shuō)您不應(yīng)該在小應(yīng)用程序中使用模式。很多良好的應(yīng)用程序都以小應(yīng)用程序?yàn)槠瘘c(diǎn),逐漸發(fā)展到大型應(yīng)用程序,所以沒(méi)有理由不以此類扎實(shí)的編碼實(shí)踐為基礎(chǔ)。

既然您已經(jīng)了解了PHP設(shè)計(jì)模式以及它們的有用之處,現(xiàn)在我們來(lái)看看 PHP V5 的五種常用模式。

工廠模式

最初在設(shè)計(jì)模式 一書中,許多設(shè)計(jì)模式都鼓勵(lì)使用松散耦合。要理解這個(gè)概念,讓我們最好談一下許多開(kāi)發(fā)人員從事大型系統(tǒng)的艱苦歷程。在更改一個(gè)代碼片段時(shí),就會(huì)發(fā)生問(wèn)題,系統(tǒng)其他部分 —— 您曾認(rèn)為完全不相關(guān)的部分中也有可能出現(xiàn)級(jí)聯(lián)破壞。

該問(wèn)題在于緊密耦合 。系統(tǒng)某個(gè)部分中的函數(shù)和類嚴(yán)重依賴于系統(tǒng)的其他部分中函數(shù)和類的行為和結(jié)構(gòu)。您需要一組模式,使這些類能夠相互通信,但不希望將它們緊密綁定在一起,以避免出現(xiàn)聯(lián)鎖。

在大型系統(tǒng)中,許多代碼依賴于少數(shù)幾個(gè)關(guān)鍵類。需要更改這些類時(shí),可能會(huì)出現(xiàn)困難。例如,假設(shè)您有一個(gè)從文件讀取的 User 類。您希望將其更改為從數(shù)據(jù)庫(kù)讀取的其他類,但是,所有的代碼都引用從文件讀取的原始類。這時(shí)候,使用工廠模式會(huì)很方便。

工廠模式 是一種類,它具有為您創(chuàng)建對(duì)象的某些方法。您可以使用工廠類創(chuàng)建對(duì)象,而不直接使用 new。這樣,如果您想要更改所創(chuàng)建的對(duì)象類型,只需更改該工廠即可。使用該工廠的所有代碼會(huì)自動(dòng)更改。

清單顯示工廠類的一個(gè)示列。等式的服務(wù)器端包括兩個(gè)部分:數(shù)據(jù)庫(kù)和一組 PHP 頁(yè)面,這些頁(yè)面允許您添加反饋、請(qǐng)求反饋列表并獲取與特定反饋相關(guān)的文章。

清單. Factory1.php

  1. <?php 
  2. interface IUser  
  3. {  
  4. function getName();  
  5. }  
  6.  
  7. class User implements IUser  
  8. {  
  9. public function __construct( $id ) { }  
  10.  
  11. public function getName()  
  12. {  
  13. return "Jack";  
  14. }  
  15. }  
  16.  
  17. class UserFactory  
  18. {  
  19. public static function Create( $id )  
  20. {  
  21. return new User( $id );  
  22. }  
  23. }  
  24.  
  25. $uo = UserFactory::Create( 1 );  
  26. echo( $uo->getName()."\n" );  
  27. ?> 
責(zé)任編輯:田樹(shù) 來(lái)源: it168
相關(guān)推薦

2023-03-03 13:30:18

設(shè)計(jì)模式編程語(yǔ)言

2009-11-17 09:31:06

Oracle Dual

2021-12-09 07:47:58

Flink 提交模式

2010-04-13 08:54:28

PHP設(shè)計(jì)模式命令模式

2010-04-19 09:30:00

工廠模式PHP設(shè)計(jì)模式

2010-03-25 08:52:30

PHP設(shè)計(jì)模式代理模式

2018-10-07 06:30:40

代碼設(shè)計(jì)模式面向?qū)ο笤瓌t

2009-12-02 18:04:35

SUSE Applia

2009-11-17 17:11:32

Oracle空閑數(shù)據(jù)塊

2009-11-20 17:10:43

Oracle B樹(shù)索引

2009-11-18 13:15:06

Oracle觸發(fā)器

2010-04-01 09:10:03

PHP設(shè)計(jì)模式責(zé)任鏈模式

2010-04-29 08:53:11

PHP迭代器模式

2010-04-08 09:27:04

PHP設(shè)計(jì)模式結(jié)構(gòu)模式

2010-04-21 08:38:18

解釋器模式PHP設(shè)計(jì)模式

2009-11-02 09:43:01

VB.NET構(gòu)造函數(shù)

2010-05-06 08:44:37

調(diào)解者模式

2023-10-07 00:14:53

2018-01-31 15:35:40

2024-09-14 08:24:44

設(shè)計(jì)模式抽象工廠模式JDK
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)