ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向プログラミング(oop)学習記(3) - シングルトンモードとファクトリーモード_PHPチュートリアル

PHPオブジェクト指向プログラミング(oop)学習記(3) - シングルトンモードとファクトリーモード_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:28:22736ブラウズ

デザイン パターンが自分自身、他者、そしてシステムにとって Win-Win であることは疑いの余地がありません。デザイン パターンはコーディングを真のエンジニアリングにします。デザイン パターンは、建物の構造と同じように、ソフトウェア エンジニアリングの基礎となります。

単一のケースパターン

シングルトン パターンは、オブジェクトのインスタンスが 1 つだけ存在できるようにする必要がある場合に非常に便利です。オブジェクト作成の制御を単一ポイントに委任し、アプリケーション内には常に 1 つのインスタンスのみが存在します。シングルトン クラスはクラスの外でインスタンス化しないでください。シングルトン クラスには次の要素が必要です。

クラスが任意にインスタンス化されるのを効果的に防ぐには、プライベート アクセス レベルのコンストラクターが必要です。

クラスのインスタンスを保持する静的変数が必要です。

このインスタンスにアクセスするには、通常 GetInstance() という名前のパブリック静的メソッドが必要です。

インスタンスが複製されないようにするには、プライベートで空の __clone メソッドが必要です。

以下では、シングルトン クラスの簡単な例を使用して説明します

コードをコピーします コードは次のとおりです:

class ClassName
{
public static $_instance;
private function __construct() ()
}
public static function GetInstance( )
戻るself::$_instance;
}
public function SayHi()
{
echo "こんにちは!";
}
}
$App= ClassName::GetInstance();
$App->SayHi();

/**
*
* アウトプット
*
* こんにちは!
*
 */


シンプルファクトリーモード


同じインターフェースを実装するクラスが多数ある場合、適切なタイミングで適切なクラスをインスタンス化します。これらの新しいクラスがプロジェクトの隅々に散在すると、ビジネス ロジックが混乱するだけでなく、プロジェクトが困難になります。維持すること。このとき、ファクトリーモードの概念を導入すると、この問題はうまく解決できます。アプリケーション構成を通じて、またはパラメータを指定することによって、ファクトリ クラスが適切なインスタンスを返すようにすることもできます。

Factory クラスは、クラスをインスタンス化する処理を各ファクトリ クラスに組み込むもので、特に他のクラスのオブジェクトを作成するために使用されます。ファクトリ パターンはインターフェイスと組み合わせて使用​​されることが多いため、ファクトリが特定のインターフェイスをサポートするクラスを返す限り、アプリケーションはインスタンス化されたクラスの詳細を知る必要がなく、便利に使用できます。以下は、ファクトリ クラスの使用法を示す簡単な例です。

コードをコピーします コードは次のとおりです:


interface ProductInterface
{
public function showProductInfo();
}
class ProductA は ProductInterface
{
function showProductInfo()
{
{
echo 'これは製品 A です。';
}
}
class ProductB は実装します製品インターフェース
{
関数showproductinfo()
{
echo 'これは積b。';
}
}
classproductfactory
{
public static function Factory($ producttype)
{
$ producttype = 'product'。 strtoupper($ProductType);
if(class_exists($ProductType))
{
return new $ProductType();
}
else
throw new Exception("リクエスト処理エラー", 1);
}
}
}
//ここには製品タイプ番号が A のオブジェクトが必要です
$x = ProductFactory::factory('A');
$x -> showProductInfo();
//ここには製品タイプ番号が B のオブジェクトが必要です
$o = ProductFactory::factory('B');
$o -> showProductInfo();
//都实现了インターフェイス ProductInterface.
のため、showProductInfo メソッドを使用できます。

小结

モードは、自動車工場の基本的なイメージのようなもので、ここでは、静的に保存されるサンプルモードと工場モードの 2 つのモードが存在し、取得が提供されます。この静的変更の静的方法はまた、この構築関数およびクローン関数が私有のものであると認識されており、入力されたパラメータまたはプログラムの構成に基づいて、異なる種類のサンプルを構築する。返されるオブジェクトは、多価プロセスの実践において重要です。

http://www.bkjia.com/PHPjc/788634.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/788634.html技術記事疑う余地はありません、設計モードはシステムに属しているため多量です;設計モードはコード制真正工程化を使用します;設計モードは软件工程の基礎石脉络であり、同じ大規模な構造の一...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。