簡單工廠模式

2021-07-16 09:56:31 字數 1969 閱讀 1422

簡單工廠模式(****** factory pattern)屬於類的創新型模式,又叫靜態工廠方法模式(static factorymethod pattern),是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。

uml圖簡單工廠模式中包含的角色及其相應的職責如下:

工廠角色(creator):這是簡單工廠模式的核心,由它負責建立所有的類的內部邏輯。當然工廠類必須能夠被外界呼叫,建立所需要的產品物件。

抽象(product)產品角色:簡單工廠模式所建立的所有物件的父類,注意,這裡的父類可以是介面也可以是抽象類,它負責描述所有例項所共有的公共介面。

具體產品(concrete product)角色:簡單工廠所建立的具體例項物件,這些具體的產品往往都擁有共同的父類。

具體的產品繼承自抽象產品,然後由簡單工廠類進行例項化。具有較好的可維護性和擴充套件性。

如果我們需要修改某個產品時,只需要修改對應的產品類,並不會影響其他的產品類。我們新增乙個產品的時候也很方便,只需要新建乙個產品類,然後再工廠模式的switch語句新增判斷就行了。

簡單工廠模式的概念並不難理解,只是自己用的還不多,日後慢慢體會吧。

下面是《大話設計模式》裡面的例子—設計乙個加減乘除的程式,做了簡單修改。

首先是我們的抽象產品類base

base.php

<?php 

abstract

class

base

function

setparm

($numa,$numb)

abstract

function

calculate

();}

然後是四個具體產品類add、subtract、multiply、divide

add.php

<?php 

class

addextends

base

}

subtract.php

<?php 

class

subtract

extends

base

}

multiply.php

<?php 

class

multiply

extends

base

}

divide.php

<?php 

class

divide

extends

base

else}}

接下來是我們的工廠類factory.php

<?php 

require_once

"./fun/base.php";

class

factory

return

$operater;

}}//自動載入所需類

spl_autoload_register(function

($class));

最後是呼叫相關類的index.php

<?php 

require_once "factory.php";

$oper = factory::createoperate("+");

$oper->setparm(2,3);

$oper->calculate();

$res = $oper->getresult();

echo $res;

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...