現実世界に例の場合は、ファクトリメソッドのパターン
-
24-09-2019 - |
質問
ん工方法です。理解していることができるよう委譲のインスタンス生成サブます。がわかりませんでしたので利用した実世界シナリオ。
インが典型的な一例を示すかにファクトリメソッドのパターンが使用できるようになるものを読み込みます。
問題文の中に書ける場合は、ファクトリメソッドのパターンのベストソリューションすることを明確にする.
解決
複数のクラス間のブリッジとして、工場の設計パターンの作品を実装するクラス。 SQL ServerとOracleのような複数のデータベースサーバーを使用しての例を考えてみましょう。あなたはバックエンドとしてSQL Serverデータベースを使用してアプリケーションを開発するが、Oracleに変更し、バックエンドのデータベースへの将来のニーズにされている場合は、工場出荷時のデザインパターン、次のコードを書いていない場合、あなたは、すべてのコードを変更する必要があります。
工場のデザインパターンでは、これを達成するための非常に少ない作業を行う必要があります。工場出荷時のデザインパターンを実装したクラスは、あなたのための世話をし、あなたの負担を軽減します。データベースサーバからの切り替えはすべてであなたを気にしないだろう。あなたは自分の設定ファイルにいくつかの小さな変更を加える必要があります。
他のヒント
例PHPコード:
interface DbTable
{
public function create($array);
}
class MySqlTable implements DbTable
{
public function create($array)
{
// add a record to a table on mysql database
}
}
class OracleTable implements DbTable
{
public function create($array)
{
// add a record to a table on oracle database
}
}
class TableFactory
{
private $dbTypeConfig = 'mysql';
public function createTable()
{
if ($this->dbTypeConfig == 'mysql') {
return new MySqlTable();
} elseif ($this->dbTypeConfig == 'oracle') {
return new OracleTable();
}
return null;
}
}
APIから私が今開発しています:
WebGalleryFactory factory = WebGalleryFactory.newInstance (WebGalleryType.PICASA);
WebAlbum album = factory.createAlbum (title, description);
この例では、私は(この例ではPICASA)特定のタイプの抽象工場を作成するためにファクトリメソッドを使用します。
これらの二つのパターンは、しばしば一緒に使用されます。
Zend_Dbのを許可することの Zend_Db_Adapterののクラスでそれを使用していますデータベースの異なる種類の作成は、構成オブジェクトから通過したデータベースの設定に基づいて、オブジェクト
一例するために設計されています。当期純 ベースクラスライブラリ (BCL) ます。CreateControlsInstance, ではでは、多くの他のメンバーのWindowsフォームを制御クラスです。
をオーバーライドすることができるこの保護方法を提供する独自の制御,例.きの実施にカスタム。
簡単な工場デザインパターンとして捉えられるべきだと思いる組織です。単純なパターン工場であるインスタンスを返しま一することで、複数のクラスによってデータを提供しなくてはならないのです。これは、この授業を返しますに同一の親クラスとメソッドがそれぞれをタスクによって異なりのようなデータです。こちらのポストは実例