シンプルなファクトリーパターン
シンプルファクトリパターン(simpleFactory)は、オブジェクトのインスタンス化の問題を解決するために使用されます。実装するアルゴリズムであるパラメータに基づいて、作成するインスタンスを動的に決定するファクトリクラスがあります。彼がそれをどのように達成したかを知る必要はありません。
特徴:
- 複数の類似したサブクラスは同じ親クラスを継承し、親クラスの変数を操作します
- ファクトリクラスは、インスタンスを作成するロジックを担当します
- サブクラスが多すぎる場合は、ファクトリパターンを使用することはお勧めしません。
例:あなたは物を買うために工場に行きたい、そしてあなたはあなたが買いたいものについての情報を工場に提供し、そして工場はあなたが買いたいものをあなたに与えるでしょう。あなたはこれがどのように作られているかを知る必要はありません。
実装
Worker.cs
class Worker
{
//工人类
private string occupation;
public string Occupation{get=>occupation; set=>occupation=value;}
public virtual void introduce()
{
Console.WriteLine("我是一名工人");
}
}
Farmer.cs
class Farmer:Worker
{
//工人的派生类:Farmer
public override void introduce()
{
Console.WriteLine("我是一名{0}",Occupation);
}
}
Doctor.cs
class Doctor:Worker
{
//工人的派生类:Doctor
public override void introduce()
{
Console.WriteLine("我是一名{0}",Occupation);
}
}
WorkerFactory.cs
class WorkerFactory
{
//工人工厂,创建工人
public static Worker creatWorker(string occupation)
{
Worker worker = null;
switch(occupation)
{
case "农民":
worker = new Farmer();
break;
case "医生":
worker = new Doctor();
break;
}
return worker;
}
}
Program.cs
class Program
{
static void Main(string[] args)
{
Worker worker = creatWorker("农民");
worker.Occupation = "农民";
worker.introduce();
}
}
総括する
- ファクトリは作成モードであり、その役割はオブジェクトを作成することです。
- 高い結束責任の原則に違反し、ロジックは同じ工場にあるため、非常に単純なシナリオでのみ使用できます
- 新しいサブクラスを追加するには、ファクトリでメソッドを変更する必要があります