设计模式 之 工厂模式

工厂模式(Factory)

  • 什么是工厂模式/工厂模式有什么用?

    官方的说法是:

        这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

        在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。——菜鸟教程

    通俗的说,工厂模式就是一种创建对象的模式。

    它是为了让程序有一个更好地封装,降低程序模块之间的耦合程度。

    这个模式的例子太多 我就不列举了,总之所有的生产对象的功能,基本都是用工厂模式制作的

  • 工厂模式的核心写法/如何写一个工厂模式?
namespace Ice
{
    namespace 设计模式
    {
        namespace Factory
        {

            public class Leifeng雷锋//雷锋父类
            {
                public virtual void Saodi扫地()
                {
                    Debug.Log("扫地");
                }
                public virtual void Maimi买米()
                {
                    Debug.Log("买米");
                }
                public virtual void Xiyi洗衣()
                {
                    Debug.Log("洗衣");
                }
            }


            public class Erb二逼 : Leifeng雷锋
            {
                public override void Maimi买米()
                {
                    Debug.Log("把买来的米扔掉了");
                }
                public override void Saodi扫地()
                {
                    Debug.Log("扫把撅折了");
                }
                public override void Xiyi洗衣()
                {
                    Debug.Log("把墨水错当成洗衣液");
                }
            }
            public class Xueleifengdedaxuesheng学雷锋的大学生 : Leifeng雷锋
            {

            }
            public class Shequzhiyuanzhe社区志愿者 : Leifeng雷锋
            {

            }

1、写一个抽象的工厂

            interface IFactory接口b工厂
            {
                Leifeng雷锋 CreateLeifeng创建雷锋();
            }

2、写一些继承抽象工厂的工厂类——部分题材来自《大话设计模式》

            public class Xueleifengdedaxueshenggongchang学雷锋的大学生工厂 : IFactory接口b工厂
            {
                public Leifeng雷锋 CreateLeifeng创建雷锋()
                {
                    return new Xueleifengdedaxuesheng学雷锋的大学生();
                }
            }
            public class Shequzhiyuanzhegongchang社区志愿者工厂 : IFactory接口b工厂
            {
                public Leifeng雷锋 CreateLeifeng创建雷锋()
                {
                    return new Shequzhiyuanzhe社区志愿者();
                }
            }
            public class Erbgongchang二逼工厂 : IFactory接口b工厂
            {
                public Leifeng雷锋 CreateLeifeng创建雷锋()
                {
                    return new Erb二逼();
                }
            }

3、使用工厂创建人物

	void Start () {
        Xueleifengdedaxueshenggongchang学雷锋的大学生工厂 xLFDDXSGC学雷锋的大学生工厂 = new Xueleifengdedaxueshenggongchang学雷锋的大学生工厂();
        Shequzhiyuanzhegongchang社区志愿者工厂 sQZYZGC社区志愿者工厂 = new Shequzhiyuanzhegongchang社区志愿者工厂();
        Erbgongchang二逼工厂 eBGC二逼工厂 = new Erbgongchang二逼工厂();

        xLFDDXSGC学雷锋的大学生工厂.CreateLeifeng创建雷锋().Saodi扫地();
        eBGC二逼工厂.CreateLeifeng创建雷锋().Maimi买米();
        sQZYZGC社区志愿者工厂.CreateLeifeng创建雷锋().Xiyi洗衣();
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值