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

歡迎訪問 生活随笔!

生活随笔

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

php

php 工厂静态类,静态工厂模式(Static Factory)

發布時間:2023/12/20 php 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 工厂静态类,静态工厂模式(Static Factory) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.9.1. 目的

與抽象工廠模式類似,此模式用于創建一系列相關或相互依賴的對象。 『靜態工廠模式』與『抽象工廠模式』的區別在于,只使用一個靜態方法來創建所有類型對象, 此方法通常被命名為 factory 或 build。

1.9.2. 例子

Zend Framework:?Zend_Cache_Backend?或 _Frontend 使用工廠方法創建緩存后端或前端

1.9.3. UML 圖

1.9.4. 代碼

你可以在?GitHub 上找到這個代碼。

StaticFactory.php

namespace DesignPatterns\Creational\StaticFactory;

/**

* 注意點1: 記住,靜態意味著全局狀態,因為它不能被模擬進行測試,所以它是有弊端的

* 注意點2: 不能被分類或模擬或有多個不同的實例。

*/

final class StaticFactory

{

/**

* @param string $type

*

* @return FormatterInterface

*/

public static function factory(string $type): FormatterInterface

{

if ($type == 'number') {

return new FormatNumber();

}

if ($type == 'string') {

return new FormatString();

}

throw new \InvalidArgumentException('Unknown format given');

}

}

FormatterInterface.php

namespace DesignPatterns\Creational\StaticFactory;

interface FormatterInterface

{

}

FormatString.php

namespace DesignPatterns\Creational\StaticFactory;

class FormatString implements FormatterInterface

{

}

FormatNumber.php

namespace DesignPatterns\Creational\StaticFactory;

class FormatNumber implements FormatterInterface

{

}

1.9.5. 測試

Tests/StaticFactoryTest.php

namespace DesignPatterns\Creational\StaticFactory\Tests;

use DesignPatterns\Creational\StaticFactory\StaticFactory;

use PHPUnit\Framework\TestCase;

class StaticFactoryTest extends TestCase

{

public function testCanCreateNumberFormatter()

{

$this->assertInstanceOf(

'DesignPatterns\Creational\StaticFactory\FormatNumber',

StaticFactory::factory('number')

);

}

public function testCanCreateStringFormatter()

{

$this->assertInstanceOf(

'DesignPatterns\Creational\StaticFactory\FormatString',

StaticFactory::factory('string')

);

}

/**

* @expectedException \InvalidArgumentException

*/

public function testException()

{

StaticFactory::factory('object');

}

}

本譯文僅用于學習和交流目的,轉載請務必注明文章譯者、出處、和本文鏈接

我們的翻譯工作遵照 CC 協議,如果我們的工作有侵犯到您的權益,請及時聯系我們。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的php 工厂静态类,静态工厂模式(Static Factory)的全部內容,希望文章能夠幫你解決所遇到的問題。

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