设计模式之简单工厂模式

本文介绍了简单工厂模式的基本概念及其实现方式,通过C#代码示例展示了如何使用简单工厂模式来创建不同类型的汽车对象,同时分析了该模式的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


简单工厂模式是设计模式中比较常用也比较简单的一种,它并不包含在23中设计模式之中。

下面给出它的一般实现(C#):


namespace ConsoleTest
{
   public class SimpleFactoryTest
    {

        public void Test()
        {
            //生产一辆宝马车,并驾驶
            CarSimpleFactory.Produce("bmw").Drive();

            Console.Read();
        }

    }

    /// <summary>
    /// 表示汽车类的简单工厂。
    /// </summary>
    class CarSimpleFactory
    {
        /// <summary>
        /// 工厂生成汽车的方法。
        /// </summary>
        /// <param name="carName">汽车名称。</param>
        /// <returns>根据汽车名称生成汽车。</returns>
        public static Car Produce(string carName)
        {
            Car car=null;

            switch(carName)
            {
                case "bens":
                    car = new Bens();
                    break;

                case "bmw":
                    car= new BMW();
                    break;

                default:
                    car = new Bens();
                    break;
            }

            return car;
        }
    }

    /// <summary>
    /// 抽象的汽车类。
    /// </summary>
    class Car
    {
        /// <summary>
        /// 汽车的驾驶方法。
        /// </summary>
        virtual public void Drive()
        {
            Console.WriteLine("car drive");
        }
    }

    /// <summary>
    /// 宝马车。
    /// </summary>
    class BMW : Car
    {
        /// <summary>
        /// 宝马车的驾驶方法。
        /// </summary>
        public override void Drive()
        {
            Console.WriteLine("bmw drive");
        }
    }

    /// <summary>
    /// 奔驰车。
    /// </summary>
    class Bens : Car
    {
        /// <summary>
        /// 奔驰车的驾驶方法。
        /// </summary>
        public override void Drive()
        {
            Console.WriteLine("bens drive");
        }
    }
}

优缺点简单分析:

1、该模式属于创建型模式,该模式将对象的创建工作封装起来,可以降低耦合度,并且代码写起来会比较简便。

2、该模式违反了开/闭原则,在上例中如果想增加“大众”汽车,那么就不得不修改工厂的produce方法,不利于扩展。


简单工厂模式就介绍到这里,在后面的文章中会介绍工厂方法模式和抽象工厂模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值