[设计]工厂模式

来源:互联网 发布:软件用户手册 由谁来写 编辑:程序博客网 时间:2024/04/30 01:45

[设计]工厂模式

场景

  • 就是简单工厂模式每次添加一个雷达都要重新改工厂,万一把工厂改坏了,那不就扯淡了。
  • 要想让一个东西变化的东西稳定就抽象它,抽象才稳定,可是最终还是要实现,所以实现要推到子类中了,只要使用之前实现了原则是推迟都是没有问题。*

解决办法

  1. 如上所说,工厂要稳定,怎么办呢,抽象它。
    • 我们先来一个抽象的工厂基类
public abstract class FactoryBase    {        public abstract LidarBase CreateLidarFactory();    }

-我们也附上雷达的基类,尽量能懂

public abstract  class LidarBase    {        public abstract void CreateLidar();    }
  • 我们附上具体的雷达类
class WindLidar : LidarBase    {        public override void CreateLidar()        {            Console.WriteLine("我是风雷达");        }    } class TempLidar : LidarBase    {        public override void CreateLidar()        {            Console.WriteLine("我是温雷达");        }    }
  • 我们再附上对应的工厂子类
class WindFactory : FactoryBase    {        public override LidarBase CreateLidarFactory()        {            return new WindLidar();        }    } class TempFactory : FactoryBase    {        public override LidarBase CreateLidarFactory()        {            return new TempLidar();        }    }
  • 我们是不是可以这样用
 static void Main(string[] args)        {            FactoryBase windFactory = new WindFactory();            FactoryBase tempFactory = new TempFactory();            LidarBase wind = windFactory.CreateLidarFactory();            LidarBase temp = tempFactory.CreateLidarFactory();            wind.CreateLidar();            temp.CreateLidar();            Console.Read();        }

类图

  • 占坑

注意

  1. 这样是不是就解决了简单工厂的问题,我们添加一个雷达就不能用工厂类了,我们保要添加对应的工厂和雷达对象就可以了。
  2. 是不是还全用工厂的优点呢
  3. 当然工厂是不是感觉一个型,全是克隆出来的。想要其中的一个不一样,是不是感觉有点不太可能。
  4. 我想在雷达工厂生产一个全天飞机是不是也不太可能,产品固定切单一
    源码

中国梦,什么是中国梦,天天说我不是没太懂,我感觉个人梦组合起来才是中国梦,每个工程师不都有一个产品梦吗?让自己的产品能为他人带来服务。