ASP.NET中的工厂模式

本文介绍了工厂模式的概念,包括其作为初始化封装工具的作用。通过一个食品类比的案例,详细展示了如何在ASP.NET中实现工厂模式,包括定义抽象类、具体食品类、零售工厂类和类别工厂。此外,还探讨了工厂模式的适用场景,如当客户端无需知道对象的具体类且可以通过子类创建对应对象时。

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

一、什么是工厂模式?

1.工厂模式就是定义一个用于创建对象的接口,让子类决定实例化哪一个类。

2.初始化封装。就是说在需求一个类的实例时,假如需要一个相同属性的实例,每次初始化的操作是一样的,用工厂模式就可以对初始化进行封装,简化操作。

工厂模式和上一篇的简单工厂模式(https://blog.youkuaiyun.com/Jie_Studio/article/details/88963624)差不多,就相当于对简单工厂的升级,也用一个小案例展示一下:

1.首先同样是定义一个食品的抽象类:


    /// <summary>

    /// 食品的抽象类

    /// </summary>

    public abstract class Food

    {

        // 输出在网上买了什么东西

        public abstract void Print();

    }

2.定义具体要实现的食品类:


    /// <summary>

    /// 牛奶类

    /// </summary>

    public class Milk : Food

    {

 

        public override void Print()

        {

            Console.WriteLine("一瓶牛奶!");

        }

 

    }

 

    /// <summary>

    /// 辣条类

    /// </summary>

    public class Spicystrips : Food

    {

 

        public override void Print()

        {

            Console.WriteLine("一包辣条");

        }

 

    }

3.定义一个零售工厂类:

    /// <summary>
    /// 零售工厂类(工厂模式)
    /// </summary>
    public abstract class FoodSimpleFactory
    {

        public abstract Food CreateFacory();

    }

4.定义的类别工厂:

    /// <summary>
    /// 饮品类工厂
    /// </summary>
    public class DrinkFactory : FoodSimpleFactory
    {

        public override Food CreateFacory()
        {

            return new Milk();

        }

    }

    /// <summary>
    /// 零食类工厂
    /// </summary>
    public class SnacksFactoyr : FoodSimpleFactory
    {

        public override Food CreateFacory()
        {

            return new Spicystrips();

        }

    }

5.最后通过客户端去调用:

    class Program
    {
        static void Main(string[] args)
        {

            //初始化工厂--饮品类
            FoodSimpleFactory foodfactory = new DrinkFactory();

            //牛奶
            Food food = foodfactory.CreateFacory();
            food.Print();

            Console.Read();

        }
    }

6.如果想改为零食类,只需要更改:

//初始化工厂--零食类

FoodSimpleFactory foodfactory = new SnacksFactoyr();

工厂模式的使用场景:

1.客户端不需要知道它所创建的对象的类。例子中我们不知道每个图片加载器具体叫什么名,只知道创建它的工厂名就完成了创建过程。

2.客户端可以通过子类来指定创建对应的对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值