PHP設計模式 ——(抽象工廠模式)

1.抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。

這種類型的設計模式屬於創建型模式,它提供瞭一種創建對象的最佳方式。

工廠模式是我們最常用的實例化對象模式,是用工廠方法代替new操作的一種模式。

使用工廠模式的好處是,如果你想要更改所實例化的類名等,則隻需更改該工廠方法內容即可,不需逐一尋找代碼中具體實例化的地方(new處)修改瞭。

為系統結構提供靈活的動態擴展機制,減少瞭耦合。

抽象多個工廠;

<?php
/*
interface是完全抽象的,隻能聲明方法,而且隻能聲明 public 的方法,不能聲明 private 及 protected 的方法
不能定義方法體,也不能聲明實例變量 。 interface 卻可以聲明常量變量 。
*/
interface Car
{
const BIG=100; //
public function getWidth(); //獲取車寬度 不允許用private和protected修飾
public function getHeight();//獲取車高度
}

interface Colors
{
public function setColor($c);
public function getColor();
}
/**
抽象工廠類的定義;必須實現車和顏色的interface接口
1.抽象類是和抽象方法
2.抽象類不能被直接實例化即new;抽象類中隻定義(或部分實現)子類需要的方法。
子類可以通過繼承抽象類並通過實現抽象類中的所有抽象方法,使抽象類具體化。
3.子類必須實現抽象類利所有抽象方法
4.抽象方法隻能用public 和protected修飾
**/
abstract class AbstractFactory implements Car,Colors
{
//獲取車的屬性
abstract public function getWidth();
abstract public function getHeight();

//獲取車顏色
abstract public function setColor($c);
abstract public function getColor();
public function getName(){
return '寶馬';
}
}
/*
子類必須實現父類的抽象方法和接口的方法
*/
class CarFactory extends AbstractFactory
{
protected $car_color;
protected $h;
protected $w;
public function getWidth()
{
return 1000;
}
public function getHeight()
{
return 200;
}
public function setColor($c){

}
public function getColor(){
return null;
}
}

/*
子類必須實現父類的抽象方法和接口的方法
*/
class ColorFactory extends AbstractFactory
{
protected $car_color;
protected $h;
protected $w;
public function getWidth()
{
return null;
}
public function getHeight()
{
return null;
}
public function setColor($c){
$this->car_color = $c;
}
public function getColor(){
return $this->car_color;
}
}

//實現生產車的類
class ProductCar
{
public static function getFactory($type){
if($type=='car'){
return new CarFactory();
}elseif($type=='color'){
return new ColorFactory();
}
}
}

//開始使用
//獲取車屬性
$fac_car = ProductCar::getFactory('car');
echo $fac_car->getWidth();

//後去顏色屬性
$fac_color = ProductCar::getFactory('color');
$fac_color->setColor('紅色');
echo $fac_color->getColor();

?>

发表回复

相关推荐

Excel常用函数的介绍

你没有看错哦,下面的内容是一份很好的Excel常用函数总结,也是工作中经常使用的函数操作,学习Excel常用函数,不要求你必须 ...

· 3分钟前

進口咖啡品牌排行榜前十名

作為上班族,咖啡簡直就是必備飲品。 早上上班,坐在辦公桌前做的第一件事就是給自己泡杯咖啡。 咖啡特有的香氣彌漫在空氣中...

· 29分钟前

大一工程化学复习

标准状态:系统中每种气体的分压为101.325kpa

· 32分钟前

给故人烧头七的意义

最近可能由于回答了一些关于生死的问题,于是很多人在后台都咨询了我相关烧头七以及能为故人做什么的问题。

· 35分钟前

藏族文化——紮西德勒

一、引言紮西德勒,吉祥如意之意,是藏族人民表示歡迎、問候、祝福等意的日常用語;紮西德勒,是藏語裡最吉祥、最能表達祝福...

· 41分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.