成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

PHP設(shè)計模式(二)工廠方法模式(Factory Method)

zhjx922 / 2848人閱讀

摘要:對于這個問題,接下來的工廠方法模式可以解決這個問題。二工廠方法模式的優(yōu)點擁有良好的封裝性,代碼結(jié)構(gòu)清晰。參考系列源地址系列目錄設(shè)計模式概述設(shè)計模式一簡單工廠模式設(shè)計模式二工廠方法模式設(shè)計模式三抽象工廠模式設(shè)計模式四單例模式

簡單工廠簡述:

簡單工廠模式實現(xiàn)了產(chǎn)品類的代碼跟客戶端代碼分離,但會有一個問題,優(yōu)秀的代碼是符合“開閉原則”如果你要加一個C類產(chǎn)品,你就要修改工廠類里面的代碼,也就是說要增加條件語句如:switch---case。對于這個問題,接下來的工廠方法模式可以解決這個問題。

一、 什么是工廠方法模式

工廠方法就是為配一個產(chǎn)品提供一個獨立的工廠類,通過不同的工廠實例來創(chuàng)建不同的產(chǎn)品實例。

二、 工廠方法模式的優(yōu)點

擁有良好的封裝性,代碼結(jié)構(gòu)清晰。對于每一個對象的創(chuàng)建都是有條件約束的。如:調(diào)用一個具體的產(chǎn)品對象,只需要知道這個產(chǎn)品的類名和約束參數(shù)就可以了,不用知道創(chuàng)建對象自身的復(fù)雜過程。降低模塊之間的耦合度。

擁有良好的擴(kuò)展性,新增一個產(chǎn)品類,只需要適當(dāng)?shù)脑黾庸S類或者擴(kuò)展一個工廠類,如下面的例子中,當(dāng)需要增加一個數(shù)據(jù)庫Oracle的操作,則只需要增加一個Oracle類,工廠類不用修改任務(wù)就可完成系統(tǒng)擴(kuò)展。

屏蔽產(chǎn)品類。這一特點非常重要,產(chǎn)品類的實現(xiàn)如何變化,調(diào)用者都不需要關(guān)心,它只需要關(guān)心產(chǎn)品的接口,只要接口保持不變,系統(tǒng)中的上層模塊就不要發(fā)生變化。

三、使用場景

支付寶、微信、銀聯(lián)的連接方式(connectMode),支付方式(payMode)。 使用工廠模式,“客戶”就不需要要知道具體的連接方式和支付方式了, 只需要調(diào)用connectMode 和 payMode即可。

MySQL、SQL Server、Oracle等數(shù)據(jù)庫的連接方式(connectMode)、查詢方式(selectMode)等操作可以使用工廠模式進(jìn)行封裝。

接下來看具體的案例:
產(chǎn)品類:
    //抽象產(chǎn)品類
    abstract class DataBase
    {
        abstract function connect();
        abstract function getOne();
    }
    
  //具體產(chǎn)品類
    class MySql extends DataBase
    {
        function connect()
        {
            return "MySQL連接對象返回";
        }
    
        function getOne()
        {
            return "MySQL返回查詢結(jié)果";
        }
    }
    
  //具體產(chǎn)品類
    class SqlServer extends DataBase
    {
        function connect()
        {
            return "SQL Server連接對象返回";
        }
    
        function getOne()
        {
            return "SQL Server返回查詢結(jié)果";
        }
    }
工廠類:
//抽象工廠類
    abstract class FactoryDataBase{
        function createDataBase(){}
    }
    
  //具體工廠類
    class FactoryMySql extends FactoryDataBase
    {
        public function createDataBase()
        {
            return new MySql();
        }
    }
    
  //具體工廠類
    class FactorySqlServer extends FactoryDataBase
    {
        public function createDataBase()
        {
            return new SqlServer();
        }
    }
客戶:
 $mysql = new FactoryMySql();
 $db1 = $mysql->createDataBase();
四、工廠方法模式的組成

抽象工廠角色:這是工廠方法模式的核心,它與應(yīng)用程序無關(guān)。是具體工廠角色必須實現(xiàn)的接口或者必須繼承的父類。

具體工廠角色:它含有和具體業(yè)務(wù)邏輯有關(guān)的代碼。由應(yīng)用程序調(diào)用以創(chuàng)建對應(yīng)的具體產(chǎn)品的對象。

抽象產(chǎn)品角色:它是具體產(chǎn)品繼承的父類或者是實現(xiàn)的接口。

具體產(chǎn)品角色:具體工廠角色所創(chuàng)建的對象就是此角色的實例。

工廠方法模式仿佛已經(jīng)把對象的創(chuàng)建進(jìn)行了很完美的包裝,使得客戶程序中僅僅處理抽象產(chǎn)品角色提供的接口。那我們是否一定要在代碼中遍布工廠呢?大可不必。也許在下面情況下你可以考慮使用工廠方法模式:

當(dāng)客戶程序不需要知道要使用對象的創(chuàng)建過程。

客戶程序使用的對象存在變動的可能,或者根本就不知道使用哪一個具體的對象。

參考 系列源地址

WilburXu/design_pattern

系列目錄

PHP 設(shè)計模式概述

PHP設(shè)計模式(一)簡單工廠模式 (Simple Factory For PHP)

PHP設(shè)計模式(二)工廠方法模式(Factory Method)

PHP設(shè)計模式(三)抽象工廠模式(Abstract Factory)

PHP設(shè)計模式(四)單例模式(Singleton)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/29516.html

相關(guān)文章

  • PHP 設(shè)計模式概述

    摘要:創(chuàng)建型模式主要有以下五種簡單工廠模式和工廠方法模式抽象工廠模式單例模式建造者模式原型模式在設(shè)計模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式。 一、 設(shè)計模式(Design pattern)是什么 設(shè)計模式是一套被反復(fù)使用、多數(shù)人知曉、經(jīng)過分類編目的代碼設(shè)計的經(jīng)驗總結(jié)。使用設(shè)計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 二、 為什么會有設(shè)計模式 在軟件開發(fā)過...

    IntMain 評論0 收藏0
  • PHP設(shè)計模式(一)簡單工廠模式 (Simple Factory For PHP

    摘要:工廠模式使一個類的實例化延遲到其子類。參考系列源地址系列目錄設(shè)計模式概述設(shè)計模式一簡單工廠模式設(shè)計模式二工廠方法模式設(shè)計模式三抽象工廠模式設(shè)計模式四單例模式 一、什么是簡單工廠模式 簡單工廠 (Simple Factory)又稱靜態(tài)工廠方法模式(Static Factory Method Pattern)   使用的頻率可以說是非常之高,它的官方解釋為:定義一個用于創(chuàng)建對象的接口,讓子...

    Hancock_Xu 評論0 收藏0
  • PHP設(shè)計模式(三)抽象工廠模式(Abstract Factory

    摘要:支持增加任意產(chǎn)品抽象工廠用來生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品。對于增加新的產(chǎn)品,無能為力支持增加產(chǎn)品族參考系列源地址系列目錄設(shè)計模式概述設(shè)計模式一簡單工廠模式設(shè)計模式二工廠方法模式設(shè)計模式三抽象工廠模式設(shè)計模式四單例模式 一、什么是抽象工廠模式 抽象工廠模式的用意為:給客戶端提供一個接口,可以創(chuàng)建多個產(chǎn)品族中的產(chǎn)品對象 ,而且使用抽象工廠模式還要滿足以下條件: 系統(tǒng)中有多個產(chǎn)品族,而系統(tǒng)一次...

    W_BinaryTree 評論0 收藏0
  • PHP設(shè)計模式(四)單例模式(Singleton)

    摘要:一什么是單例設(shè)計模式單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。 一、什么是單例設(shè)計模式 單例模式,也叫單子模式,是一種常用的軟件設(shè)計模式。在應(yīng)用這個模式時,單例對象的類必須保證只有一個實例存在。 二、單例模式的技巧 利用$_instance私有變量來保存類的唯一實例化對象; 設(shè)計一個getInstance對外公開的函數(shù),...

    余學(xué)文 評論0 收藏0
  • Java設(shè)計模式之()——工廠模式

    摘要:需要說明的是在設(shè)計模式一書中將工廠模式分為兩類工廠方法模式與抽象工廠模式,將簡單工廠模式看為工廠方法模式的一種特例,兩者歸為一類。工廠模式的作用工廠模式的作用封裝變化創(chuàng)建邏輯有可能變化,封裝成工廠類之后,創(chuàng)建邏輯的變更對調(diào)用者透明。1、什么是工廠模式Define an interface for creating an object,but let subclasses decide whi...

    Doyle 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<