设计模式学习(二)------ 简单工厂模式

设计模式学习(二)—— 简单工厂模式

简单工厂模式就是负责生成类的一个类生产共产,通常它生产出来的类都有一个共同的父类和某些共同的方法,不过这些类都会完成不同的任务,并针对不同的数据进行优化。

一个例子

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;
    }
}

在上面这个例子中,顾客向汽车工厂订购车辆,汽车工厂需要按照顾客的要求返回相应的汽车对象,顾客对于汽车工厂如何制造汽车并不感兴趣。也就是说通过汽车工厂这个类降低了类之间的耦合性。

缺点

  1. 工厂类集中了所有产片制作的逻辑,一旦工厂类不能正常工作,那么整个系统都会受到影响。
  2. 系统扩展困难,一旦需要制造新的对象,那么工厂类的逻辑就需要修改,有可能会造成工厂逻辑过于复杂。

应用场景

  1. 当工厂类需要创建的对象比较少的时候就可以考虑使用简单工厂模式
  2. 如果客户只了解产品的某个参数,而对于产品的制造工艺不感兴趣,那么就可以使用简单工厂模式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值