〝 古人學問遺無力,少壯功夫老始成 〞
工廠模式是在設計模式中比較常見,打個比方,如果你的小孩需要一個海賊王的玩具,你會去找一個海賊王的玩具加工廠幫你做一個,那么如果小孩又想要七龍珠的模型,你又要去找七龍珠的玩具加工廠? 這肯定不現實,而且工廠只做固定一種業務,肯定不久就會倒閉,那么好的方法是啥呢,你去找一個工廠,然后給他們圖紙,告訴他們你需要哪種玩具即可,他們會自動根據你的圖紙去設計你想要的玩具,這就是工廠模式
目錄
一、創建簡單工廠類
二、工廠模式的實際應用
一、創建簡單工廠類
- 工廠類的作用就是你只要傳你需要的類進去,你就能得到他的實體化物件
- 其實工廠就是幫你實體化你所需要的類
<?php
/**
* 工廠類
*/
class factory
{
public static function create($class_name) {
return new $class_name();
}
}
class A {}
class B {}
$a = factory::create('A');
$b = factory::create('B');
var_dump($a);
var_dump($b);
- 結果如下
object(A)#1 (0) {
}
object(B)#2 (0) {
}
二、工廠模式的實際應用
<?php
/**
* Interface shape
*/
interface shape
{
public function area();
public function perimeter();
}
/**
* 矩形
* Class rectangle
*/
class rectangle implements shape
{
private $width;
private $height;
public function __construct($width, $height) {
$this->width = $width;
$this->height = $height;
}
public function area() {
return $this->width * $this->height;
}
public function perimeter() {
return 2 * ($this->width + $this->height);
}
}
/**
* 圓
* Class circle
*/
class circle implements shape
{
private $radius;
public function __construct($radius) {
$this->radius = $radius;
}
public function area() {
return M_PI * pow($this->radius, 2);
}
public function perimeter() {
return 2 * M_PI * $this->radius;
}
}
/**
* 工廠類
* Class factory
*/
class factory
{
public static function create() {
switch (func_num_args()) {
case 1:
return new circle(func_get_arg(0));
break;
case 2:
return new rectangle(func_get_arg(0), func_get_arg(1));
break;
}
}
}
$a = factory::create(4, 5);
$b = factory::create(2);
echo '矩形的周長為:' . $a->perimeter() . '<br/>';
echo '矩形的面積為:' . $a->area() . '<br/>';
echo '圓的周長為:' . $a->perimeter() . '<br/>';
echo '圓的面積為:' . $a->area() . '<br/>';
猜你喜歡:
詳解〝事后諸葛亮〞式的觀察者模式
詳解〝九陽神功〞式的配接器模式
詳解〝富士康流水線〞式的工廠模式
詳解〝極限摳門〞式的單例模式
詳解〝洞悉人性〞式的策略模式
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/279603.html
標籤:其他
上一篇:部署網站有關問題
