简单工厂模式
简单工厂模式(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();
}
}
总结
- 工厂是创建型模式,它的作用就是创建对象;
- 违反了高内聚责任分配原则,逻辑都在同一个工厂里,因此只有在很简单的场景下使用
- 添加新的子类,就要修改工厂中的方法