日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 工厂模式 使用场景,PHP设计模式之工厂模式

發布時間:2024/1/23 php 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 工厂模式 使用场景,PHP设计模式之工厂模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

序言

每一種模式都有它的定義,它的使用場景。我們從實際當中進行學習并且在相應額場景可以運用。所謂的設計模式只是一種思想,并不存在是有固定的代碼。學會了思想并且對應上使用的場景,慢慢而言在開發之中這也就慢慢成為你的一部分。

今天我們來講的是工廠模式,工廠模式一共分3三種。簡單工廠模式,工廠方法模式以及抽象工廠模式。

簡單工廠模式

在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。

用一種很通俗的話來說就是,當一位買家向玩具工廠訂貨,正好工廠有生產洋娃娃車間,布袋熊車間,湯姆貓車間等等。買家說我需要洋娃娃,而工廠的終端與買家達成協議,并下達命令通知對應的車間進行生產。

具體我們使用php來模擬簡單工廠模式,它有那一些構造呢。

如:

Factory類:負責創建具體產品的實例

Product類:抽象產品類,定義產品子類的公共接口

ConcreteProduct 類:具體產品類,實現Product父類的接口功能,也可添加自定義的功能

Factory類,只負責下發對應命令并且拿到相對應的產品。

require_once 'dolly.php';

require_once 'tomcat.php';

require_once 'wombat.php';?

/** * Class factory */

class SimpleFactory{

/**

* 通知生產車間

* @param string $name 實際終端下的命令

* @return Dolly|Tomcat|Wombat

* @throws Exception

*/

public static function noticeWorkShop($name){

switch ($name) {

// 洋娃娃

case 'dolly':

return new Dolly();?

// 湯姆貓

case 'tom_cat':

return new Tomcat();?

// 布袋熊

case 'wombat':

return new Wombat();?

default:

throw new Exception('抱歉!我們工廠不生產該種類玩具。');

}

}

}

?try {

$product = SimpleFactory::noticeWorkShop('dolly');

echo $product->sound();

} catch (Exception $e) {

echo $e->getMessage();

}

復制代碼

product接口類定義產品對應所擁有的行為

??interface Product {

/**

* @return mixed

*/

public function sound();

}

復制代碼

ConcreteProduct對應的產品行為

require_once 'product.php';

?class Dolly implements Product {

?

/** * Dolly constructor. */

public function __construct() {

}

?

/** * @return mixed */

public function sound() {

echo '我叫洋娃娃';

}

}

復制代碼

總結簡單工廠模式:

具體使用場景可以使用在

1. 不需要實例化過多的對象,盡可能保證代碼的簡單。

2. 不需要關注對象是如何生成的操作。

從簡單的工廠模式來看,首先由于只有一個工廠類,但是其最大的缺點在于工廠類不夠靈活,增加新的具體產品需要修改工廠類的判斷邏輯代碼,而且產品較多時,工廠方法代碼將會非常復雜。

工廠方法

工廠方法模式是簡單工廠的升級版,在原有的基礎上對工廠進行一個抽象的升級,我們不再提供一個統一的工廠類來創建所有的對象,而是針對不同的對象提供不同的工廠。也就是說每個對象都有一個與之對應的工廠。

用一種很通俗的話來說就是,當一位買家向玩具工廠訂貨,原來在簡單工廠里是使用的車間,后來進行了升級變成子工廠,由終端下發到對應的子廠商進行生產。

具體我們使用php來模擬簡單工廠模式,它有那一些構造呢。在原有的基礎上多了一個工廠的抽象類

如:

Factory類:負責創建具體產品的實例

Product類:抽象產品類,定義產品子類的公共接口

ConcreteProduct 類:具體產品類,實現Product父類的接口功能,也可添加自定義的功能

AbstractFactory類: 抽象工廠類,專門負責子廠商的生成

require_once 'dolly.php';

?

/** * Class AbstractFactory */

abstract class AbstractFactory {

/** * @return mixed */

abstract public static function create();

}

?

/** * Class DollyFactory */

class DollyFactory extends AbstractFactory {

/** * @return mixed */

public static function create() {

return new Dolly();

}

}

?$dolly = DollyFactory::create();

?$dolly->sound();

復制代碼

總結工廠方法模式:

具體使用場景可以使用在

1. 通過子類來指定創建對應的對象。

工廠方法模式是簡單工廠模式的進一步抽象和推廣。由于使用了面向對象的多態性,工廠方法模式保持了簡單工廠模式的優點,而且克服了它的缺點。在工廠方法模式中,核心的工廠類不再負責所有產品的創建,而是將具體創建工作交給子類去做。這個核心類僅僅負責給出具體工廠必須實現的接口,而不負責產品類被實例化這種細節,這使得工廠方法模式可以允許系統在不修改工廠角色的情況下引進新產品。

抽象工廠方法

提供一個創建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。

此模式是對工廠方法模式的進一步擴展。在工廠方法模式中,一個具體的工廠負責生產一類具體的產品,即一對一的關系,但是,如果需要一個具體的工廠生產多種產品對象,那么就需要用到抽象工廠模式了。

通俗而言,工廠將生產電視和生產手機合并成一個工廠,而中間不同產品的類型成為1個工廠對應多個不同的產品。

/** * Interface MiPhone */

interface MiPhone {

/** * @return mixed */

public function display();

?

/** * @return mixed */

public function use();

}

?

/** * Class Mi */

class Mi implements MiPhone {

/** * @return mixed */

public function display() {

echo "顯示屏幕內容";

}

?

/** * @return mixed */

public function use() {

echo "正常操作內容";

}

}

?

/** * Interface Tv */

interface Tv {

/** * @return mixed */

public function open();

?

/** * @return mixed */

public function use();

}

?

/** * Class MiTv */

class MiTv implements Tv {

/** * @return mixed */

public function open() {

echo "小米電視";

}

?

/** * @return mixed */

public function use() {

echo "切換不同的頻道";

}

}

?abstract class Factory {

/** * @return mixed */

abstract public static function createPhone();

?

/** * @return mixed */

abstract public static function createTv();

}

?

/** * Class ProductFactory */

class ProductFactory extends Factory {

public static function createTV() {

return new MiTv();

}

? public static function createPhone() {

return new Mi();

}

}

?$newTv = ProductFactory::createTV();

$newTv->open();

$newTv->use();

?$newPc = ProductFactory::createPhone();

$newPc->open();

$newPc->use();

復制代碼

總結抽象工廠方法模式:

具體使用場景可以使用在

1. 不需要知道它所創建的對象的類

2. 需要一組對象共同完成某種功能時。并且可能存在多組對象完成不同功能的情況。

如果您對這些感興趣,歡迎評論,收藏、轉發給予支持!> 歡迎關注我的公眾號:猿力說,每日分享學習之路的點點滴滴,以及程序人生.

總結

以上是生活随笔為你收集整理的php 工厂模式 使用场景,PHP设计模式之工厂模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久精品99国产精品日本 | 欧美高清在线视频 | 欧美 丝袜 自拍 制服 另类 | 另类老妇性bbwbbw图片 | 日韩福利在线播放 | 一区二区三区精品在线观看 | 日本波多野结衣在线 | 免费性爱视频 | 婷婷久久精品 | 国产精品视频999 | 免费美女av | 亚洲黄色一区二区 | 综合久久亚洲 | 久久露脸国语精品国产 | 亚洲三区在线播放 | 成年人午夜网站 | 久久久无码精品亚洲无少妇 | 一本色道久久hezyo加勒比 | 亚洲成人www| 人妻射精一区二区 | 五月天黄色小说 | 欧美视频色 | 伊人久久青青草 | 香蕉伊思人视频 | 在线观看国产一区二区三区 | 寡妇一级片 | 伊人亚洲天堂 | 天天摸日日干 | 国产99色| 自拍偷拍福利 | 国产中文字幕第一页 | 亚洲人丰满奶水 | 一区二区三区四区视频 | 亚洲精品久久久 | 国产精品一二三四五区 | 成人免费一区二区三区 | 亚洲一区在线电影 | www,超碰| 在线观看免费国产 | 日本午夜视频在线观看 | 亚洲黄色片网站 | 日本三级视频在线播放 | 扒丝袜 | 正在播放国产一区 | 欧洲亚洲天堂 | 在线观看欧美成人 | 67194少妇在线观看 | 午夜少妇 | 原创露脸88av| 97成人精品视频在线观看 | 在线观看69 | 超碰在线观看av | 黄色av免费在线播放 | 健身教练巨大粗爽gay视频 | 精品在线观看视频 | 精产国品一区二区 | 人人澡人人看 | 中文字幕欧美专区 | 亚洲福利精品视频 | 丝袜诱惑av | 亚洲欧美色图在线 | 亚洲色图15p| 亚洲区一区 | 色乱码一区二区三区网站 | 激情小说在线观看 | 午夜成人免费视频 | 免费看黄色大片 | 青青草综合在线 | 秋霞午夜鲁丝一区二区老狼 | 超碰影院在线 | 国产黄色录相 | 秋霞视频在线观看 | 全国男人的天堂网 | 日韩精品久久 | 视频一区二区三区精品 | 欧美色吊丝 | 精品无码久久久久久久久久 | 国产又粗又猛又爽又黄无遮挡 | 少妇被躁爽到高潮无码文 | 成人三级做爰av | 一区二区日韩av | 精品国产一区二区三区无码 | 亚洲精品国产精品国自产在线 | 国产三级久久久久 | free性中国hd国语露脸 | 91精品啪在线观看国产 | 色一情一区二区三区四区 | 哈利波特3在线观看免费版英文版 | 夜夜精品一区二区无码 | 久久天天躁狠狠躁夜夜躁 | 国产精品99久久久久 | 在线视频网| 亚洲一区免费在线观看 | 国产黄色片免费在线观看 | 久久免费视频99 | 欧美日韩精品久久久免费观看 | 性一交一乱一色一免费无遮挡 | 成人国产精品一区二区 | 国产爆乳无码一区二区麻豆 |