[设计]简单工厂模式
来源:互联网 发布:软件用户手册 由谁来写 编辑:程序博客网 时间:2024/04/30 03:19
[设计]简单工厂模式
场景
- 能不能有那么一个东西,我进去一个需求出来一个产品,比如我想要一个风雷达,就出来一个可以测风的雷达,我想要一个温雷达,就出来一个测温的雷达。
- 肯定能,自己建个雷达厂,装上个生产线,要什么有什么*
解决办法
- 我们这个雷达厂肯定要有对应的生产线,也就是雷达产生的类
- 我们这个这个厂是不是最变化的就是生产线,如果添加一个生产线就能多生产一种雷达,所以我们设计的原则就是把多变易变的东西弄出去让它单独变,不变的稳定下来。
- 首先我们肯定还是要这上一切都依赖于抽象,所以我们先来一个雷达基类。
public abstract class LidarBase { public abstract void CreateLidar(); }
- 我们弄个两个生产线
class TempLidar : LidarBase { public override void CreateLidar() { Console.WriteLine("我是温雷达"); } } class WindLidar : LidarBase { public override void CreateLidar() { Console.WriteLine("我是风雷达"); } }
- 最后我们给工厂一个生产接口就是接受需求的地方,也就是区分让那条生产线工作的那么个东西,能区分就好。当然好东西还是有好处的,区分的同时可能还可以做点其它的操作。
class LidarFactory { public static LidarBase CreatLidar(string lidarFlag) { LidarBase lb = null; switch (lidarFlag) { case "wind": lb = new WindLidar(); break; case "temp": lb = new TempLidar(); break; default: break; } return lb; } }
- 最后客户可以这样用了。
static void Main(string[] args) { LidarBase lb1 = LidarFactory.CreatLidar("wind"); lb1.CreateLidar(); LidarBase lb2 = LidarFactory.CreatLidar("temp"); lb2.CreateLidar(); Console.Read(); }
类图
- 占坑
注意
- 是不是感觉这个工厂没有技术含量,每次想加个东西就要加生产线。
- 是不是感觉如果这个工厂停电了,妈的,什么雷达都产生不了。如果一个个直接创建停电一个还能产生其它的呢。
- 同样是不是我们不用操作怎么生产了,交给工厂了。
- 责任分的更细了,出了问题也方便确定是谁的问题,维护肯定更快更好了
源码
不论我们面对的是什么,只要敢于面对,这时候才能说我面对了,只要没有死,就别说尽力了。世上千里马少有,伯乐也少有。
阅读全文
0 0
- 简单工厂设计模式
- 设计模式-----简单工厂
- 简单工厂设计模式
- 设计模式:简单工厂
- 设计模式 - 简单工厂
- 设计模式 简单工厂
- 【设计模式】【简单工厂】
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式--简单工厂
- 简单工厂设计模式
- 简单工厂设计模式
- 设计模式------------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 设计模式---------简单工厂
- 设计模式--简单工厂
- 简单工厂设计模式
- 19.find — xargs的使用实例
- 归并排序疑问
- 利用原生JS实现表格正反排序
- 使用IntelliJ IDEA开发java web设置步骤
- 吐槽
- [设计]简单工厂模式
- 518抽奖软件源码之:检查文件名合法性
- 51nod 1154 回文串划分
- JZOJsenior4778.【NOIP2016提高A组模拟9.14】数列编辑器
- tar解压问题gzip: stdin: not in gzip format
- [设计]工厂模式
- unity的生命周期
- HTML:Input元素标签的详细介绍
- UVA 437 The Tower of Babylon