【设计模式游戏完美开发】工厂模式

一、最简单的工厂模式 其一

Factory抽象类:内有一个Create抽象方法,子类FactoryA:实现Create方法生成A产品,子类FactoryB:实现Create方法生成B产品

二、最简单的工厂模式 其二

Factory抽象类:内有Create(int type)抽象方法,子类FactoryChild:实现Create(int type)方法根据传入的type来对应生成不同的产品。

三、以泛型类形式实现的工厂模式(稍微难那么一丢丢,不过也不难哈)

伪代码如下:

class Factory<T>  where T : Produce   //可使用where来进行约束T,如此处是约束T是必须要继承自Produce类的

{

    void Create(){ return T();} 

}

外部用法是直接    Factory  f = new Factory<ProduceA>();    ProduceA  pa =  f.Create();

四、以泛型方法形式实现的工厂模式

伪代码:

class Factory{

  void Create<T>(){   return T(); }  //这里的T也可以进行约束的哦~ 

}

外部用法是直接 Factory f = new Factory();   ProduceA pa = f.Create<ProduceA>(); 

上面的代码如果有拼写错误请无视,看懂就好蛤~

最好的个人认为最好的是第一种,为什么?第二种工厂是通过if来区分不同产品生产的,所以一个工厂类会不断变大,进而难以维护,第三种工厂和第四种工厂都不利于多人开发,因为泛型就算约束的再好,一旦产品类群组超级多的时,就很难确定应该要将T填写成什么类才是正确的,当然你说“我可以全搜一下,看看是不是这个类型可以用这个泛型工厂创建,不就知道了吗?”,如果真的每次创建对象的时候都要这样看一看,你觉得会比起第一种或第二种方式好吗?当然小型项目是察觉不出这种坑爹的问题的,当项目变大了,可能就很难受了。

但是第一种工厂会导致工厂类过多问题(俗称:类爆炸),这时候可能就要用到抽象工厂来进行减少类的重复性,其实抽象工厂是很少用到的,它其实就是在工厂模式上的封装。后期会更新解释抽象工厂,当然解释的也不是很全面因为我从来没用过啊。。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值