php設計模式之原廠模式

來源:互聯網
上載者:User

標籤:class   方法   簡單工廠   用戶端   else   服務   sql   實現   個數   

最近一直很迷惑,設計模式到底是幹嘛的,有什麼用呢!所以專門花時間學習並整理了設計模式的好處等等!那今天先給大家一起分享下我所理解的設計模式--原廠模式!

  1. 先說說優點:
    1. 減少了工作量
    2. 方便擴充維護

  2. 再說說其實現方式:

      給2個類大家好好看一下,理解一下其內容: 

  3. 在這個類裡,如果使用者需要再添加一個資料庫聯結,比如oracle,是否需要修改Factory裡的createDb的內容,這樣的話,php還好,但如果在C/JAVA裡,修改編譯是
    需要很長時間的,所以這種方法對於開發的話,還是不太容易擴充。
    <?php /*** 簡單原廠模式*/ //共同介面interface db{ function conn();}//伺服器端開發(不知道會被誰調用)class dbmysql implements db{ public function conn(){ echo "mysql"; }}class dbsqlite implements db{ public function conn(){ echo "sqlite"; }}class Factory{ public static function createDB( $type ){ if($type == ‘mysql‘){ return new dbmysql(); }else if( $type == ‘sqllite‘ ){ return new dbsqlite(); }else{ throw new Exception("錯誤的資料庫連接",1); } }}//用戶端 首先看不到dbmysql和dbsqlite $mysql = Factory::createDB("mysql");$mysql->conn();
    我們再來看看真正的原廠模式,大家可以看看“//伺服器端添加oracle類===”這下面的內容,添加了一個oracel串連,只是增加了兩個擴充,這樣代碼更容易擴充和維護。
    <?php /*** 原廠模式*/ //共同介面interface db{ function conn();}interface Factory{ function createDB();}//伺服器端開發(不知道會被誰調用)class dbmysql implements db{ public function conn(){ echo "mysql"; }}class dbsqlite implements db{ public function conn(){ echo "sqlite"; }}class mysqlFactory implements Factory{ public function createDB(){ return new dbmysql(); }}class sqliteFactory implements Factory{ public function createDB(){ return new dbsqlite(); }}//伺服器端添加oracle類===//前面的代碼不用動class dboracle implements db{ public function conn(){ echo "oracle"; }}class oracleFactory implements Factory{ public function createDB(){ return new dboracle(); }}//用戶端 首先看不到dbmysql和dbsqlite $fact = new oracleFactory();$db = $fact->createDB();$db->conn();

     

    

  

 

php設計模式之原廠模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.