シンプルファクトリパターン[静的ファクトリメソッドパターン]
はクラス作成パターンです
ファクトリ パターンのいくつかの形式:
1. 単純なファクトリ パターン | 静的ファクトリ メソッド パターンとも呼ばれます
2. ファクトリ メソッド パターン | ポリモーフィズム ポリモーフィック ファクトリとも呼ばれます
3. 抽象ファクトリ パターン | ツールキットとも呼ばれます
コードを直接実行するだけで、すべてがテスト済みです
リーリー例 #1 ファクトリ メソッドを呼び出す (パラメータ付き)
class Example
{
// パラメータ化されたファクトリ メソッド
public static function Factory($type)
{
if (include_once 'Drivers/' . $ type . '.php') {
$classname = 'Driver_' . $type;
return new $classname;
} else {
throw new Exception ('ドライバーが見つかりません');
}
}
}
?> ;
----------------------------------------
例 #2 シングルトン パターン
php
class Example
{
// この属性にクラス インスタンスを保存します
private static $instance;
// オブジェクトの直接作成を防ぐために、コンストラクターは private と宣言されます
private function __construct()
{
echo '私は構築されました ';
}
// シングルトンメソッド
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// サンプルクラスの通常のメソッド
public function bark()
{
echo 'Woof!';
}
// ユーザーがオブジェクト インスタンスをコピーしています
public function __clone()
{
trigger_error('クローンは許可されていません。', E_USER_ERROR);
}
}
?>
LZ は、単純なファクトリ、ファクトリ メソッド、および抽象ファクトリを一緒に勉強することをお勧めします。笑、私の先生は、少し前にこれら 3 つのモードの違いを勉強するように頼んだのですが、一緒に勉強するとより明確になるかもしれません。
単純なファクトリ パターンは、静的ファクトリ メソッド パターンとも呼ばれます。名前の変更から、このモードは非常に単純であることがわかります。その目的は単純で、オブジェクトを作成するためのインターフェイスを定義することです。
まずそのコンポーネントを見てみましょう:
1) ファクトリの役割: これはこのモデルの中核であり、特定のビジネス ロジックと判断ロジックが含まれています。 Java では、多くの場合、具象クラスによって実装されます。
2) 抽象的な製品の役割: これは通常、特定の製品または実装されたインターフェイスによって継承される親クラスです。 Javaではインターフェースまたは抽象クラスによって実装されます。
3) 特定の製品ロール: ファクトリ クラスによって作成されたオブジェクトは、このロールのインスタンスです。 Javaの具象クラスによって実装されます。
ファクトリ メソッド パターンは、単純なファクトリ パターン内のファクトリ メソッドの静的属性を削除し、サブクラスで継承できるようにします。このようにして、単純なファクトリ パターンでファクトリ メソッドに集中した圧力を、ファクトリ メソッド パターンの異なるファクトリ サブクラスで共有できます。
その構成を見てください:
1) 抽象的なファクトリの役割: これはファクトリ メソッド パターンの中核であり、アプリケーションとは何の関係もありません。これは、特定のファクトリ ロールが実装する必要があるインターフェイス、または継承する必要がある親クラスです。 Java では、抽象クラスまたはインターフェイスによって実装されます。
2) 特定のファクトリ ロール: 特定のビジネス ロジックに関連するコードが含まれています。特定の製品に対応するオブジェクトを作成するためにアプリケーションによって呼び出されます。
3) 抽象的な製品の役割: 特定の製品または実装されたインターフェイスによって継承される親クラスです。 Java では、通常、実装する抽象クラスまたはインターフェイスが存在します。
4) 特定の製品ロール: 特定のファクトリ ロールによって作成されたオブジェクトは、このロールのインスタンスです。 Java の特定のクラスによって実装されます。