设计模式学习(二)—— 简单工厂模式
简单工厂模式就是负责生成类的一个类生产共产,通常它生产出来的类都有一个共同的父类和某些共同的方法,不过这些类都会完成不同的任务,并针对不同的数据进行优化。
一个例子
public class Customer
{
static void Main(string[] args)
{
Car car1 = CarFactory.ProduceCar("BMW");
car1.Print();
Car car2 = CarFactory.ProduceCar("Benz");
car2.Print();
}
}
public abstract class Car{
public abstract void Print();
}
public class BMW:Car
{
public BMW(){
}
public override void Print()
{
Console.WriteLine("This is BMW!\n");
}
}
public class Benz:Car
{
public Benz(){
}
public override void Print()
{
Console.WriteLine("This is Benz!\n");
}
}
public class CarFactory
{
public static Car ProduceCar(string name)
{
Car car = null;
if (name.Equals("BMW"))
{
car = new BMW();
}
else if(name.Equals("Benz"))
{
car = new Benz();
}
return car;
}
}
在上面这个例子中,顾客向汽车工厂订购车辆,汽车工厂需要按照顾客的要求返回相应的汽车对象,顾客对于汽车工厂如何制造汽车并不感兴趣。也就是说通过汽车工厂这个类降低了类之间的耦合性。
缺点
- 工厂类集中了所有产片制作的逻辑,一旦工厂类不能正常工作,那么整个系统都会受到影响。
- 系统扩展困难,一旦需要制造新的对象,那么工厂类的逻辑就需要修改,有可能会造成工厂逻辑过于复杂。
应用场景
- 当工厂类需要创建的对象比较少的时候就可以考虑使用简单工厂模式
- 如果客户只了解产品的某个参数,而对于产品的制造工艺不感兴趣,那么就可以使用简单工厂模式。