ホームページ > バックエンド開発 > PHPチュートリアル > 単純なファクトリ パターンの PHP 実装 C# 単純なファクトリ パターン ファクトリ パターン java java 単純なファクトリ パターンの例

単純なファクトリ パターンの PHP 実装 C# 単純なファクトリ パターン ファクトリ パターン java java 単純なファクトリ パターンの例

WBOY
リリース: 2016-07-29 08:54:59
オリジナル
1377 人が閲覧しました

	简单工厂模式又叫静态工厂方法模式,主要作用是通过一个简单工厂类来实例化(创建)各个类的对象,而不需要通过new来实例化对象。优点在于,工厂类中包含了一定的逻辑判断,会根据客户端的选择条件动态实例化相关的类。缺点在于,当需要增加新的功能类时,需要去修改工厂类。

以下内容以一个简单的计算器程序作为案例分析。第一步,定义Operation,是一个父类,有两个属性,表示用于计算的两个参数。

<?php
/*
* 计算类
*/
class Operation{
	private $numA=0;
	private $numB=0;
	public function setNumA($numA)
	{
		$this->numA=$numA;
	}

	public function getNumA()
	{
		return $this->numA;
	}

	public function setNumB($numB)
	{
		$this->numB=$numB;
	}

	public function getNumB()
	{
		return $this->numB;
	}
}
?>
ログイン後にコピー

2番目のステップは、演算を実装するメソッドを宣言するインターフェースを定義することです

<?php
/*
*工厂接口
*/
interface InterOperate{
	function getResult();
}
?>
ログイン後にコピー

3番目のステップは加算演算クラスです(減算クラス、乗算クラス、トリガークラスなどは省略します)

<?php

/**
* 加法运算类
*/
include_once "IOperate.php";
include_once &#39;Operation.php&#39;;
class OperationAdd extends Operation implements InterOperate
{
	function getResult()
	{
		$result=$this->getNumA()+$this->getNumB();
		return $result;
	}
}

?>
ログイン後にコピー

最後に、さまざまなクラスのオブジェクト インスタンスを作成するための単純なファクトリ クラスを定義します。通常、単純なファクトリ クラスによって返されるオブジェクトには共通の親クラスがあります。この例では、共通の親クラスは Operation クラスであり、加算クラスと減算クラスは両方とも Operation のサブクラスです。

<?php
include_once "OperationAdd.php";
include_once "OperationMinus.php";
class SimpleFactory {
	static function createAdd()
	{
		return new OperationAdd;
	}

	static function createMinus()
	{
		return new OperationMinus;
	}
}

?>
ログイン後にコピー

クライアントコードは次のとおりです:

<?php
/*
*	客户端代码
*/
include_once "OperationAdd.php";
include_once &#39;Operation.php&#39;;
include_once &#39;SimpleFactory.php&#39;;

$op=SimpleFactory::createAdd();
$op->setNumA(2);
$op->setNumB(4);
echo $op->getResult();

$om=SimpleFactory::createMinus();
$om->setNumA(45);
$om->setNumB(34);
echo "<br>";
echo $om->getResult();
?>
ログイン後にコピー

以上、シンプルなファクトリパターンの内容も含めて、PHP での実装を紹介しましたので、PHP チュートリアルに興味のある方の参考になれば幸いです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート