zoukankan      html  css  js  c++  java
  • 个人见解—简单工厂设计模式

       前一段时间我看了一下关于设计模式的一些文章,想从中提高点自己境界,结果不是很理想(但是我还是要这里喷喷,总学到一点了吧)。总体感觉这些东西很抽象,我的大脑里现在没有什么设计模式令人发狂的特点,只有我现在的个人见解(如有雷同,各种原因)。

    整个设计模式中,最简单的算是简单工厂设计模式吧(有点篇主说这个可以不算设计模式,+_+|||),真正的内容简单易懂,不过也充分的展现了oo的精髓啊,让代码变得更加简洁明了。

    简单工厂设计模式类图:

    简单工厂设计模式基本上算是这三部了:

      1 工厂类(Simple Factory): 你要实现功能的地方,调用抽象类实例化它子类,已完成不同需求

      2 抽象产品(Product):定义抽象类和抽象方法(子类要实现该类中的方法)。

      3 具体产品(ConcreteProduct):定义继承抽象类的子类,同时要重写父类的方法(这个你懂得啊)

     我曾经项目中实际项目需求:快餐仓库项目中,比如入库,退货,提货。。。等一些内容的详细信息,它们都需要查询,同时查询列头有差异,而我想用一个窗体实现查询所有内容的详细信息,怎么办?一种是每一个详细用一个datagridview,然后隐藏,用哪一个的时候显示哪一个,其他的都隐藏,另一种是用一个datagridview,但其中表头列动态生成。

    前者方式可以用,但是如果详细多了,代码量就会增多,看起来臃肿,维护找bug是个麻烦事(关键是其他人看来,这样写很不专业。。。。)。后者方式其实写起来也很麻烦,但是我这里用了简单工厂设计模式写的:

    1 工厂类(Simple Factory):这里调用抽象类,实例化它的子类,方法返回一个datatable,内容为datagridview的各个属性,如columnName,Name,width等

    2 抽象产品(Product):这里就写了一个抽象方法,返回一个datatable(这些是废话,上面都写了)

    3 具体产品(ConcreteProduct):这里我是数组将一列列属性存起来,然后添加到datatable中。

    (代码现在获得不到,就没有代码示例了)

    个人总结:

    1.在实际项目中实现代码的低耦合,各个子类方法实现自己功能,方便调试。
    2.明确了各自的职责和权利,有利于整个软件体系结构的优化。
    3.不过增加程序的复杂度(至少在这里我感觉写起来让我搞了半天,不过能提升自己对OO认识)。
    4.违反了高内聚责任分配原则,类与类之间关系过于密切,比如添加一个功能,要修改工厂类,和子类(这个麻烦)。

    总的来说,简单工厂设计模式用起来有点麻烦,但是算是给自己打打基础,之后抽象工厂、方法工厂等设计模式可是在此基础上扩展的。

  • 相关阅读:
    正则去掉 html标签
    app内嵌 h5页面 再滑动的时候 触发击穿底下的一些touchstart事件
    设置按钮不能连续点击并触发点击事件
    使用NPOI导入导出标准Excel
    ASP.NET导出word实例
    常用SQL语句大全总结
    判断以及防止SQL注入
    javascript 正则表达式总结
    前端页面优化技巧
    自我介绍
  • 原文地址:https://www.cnblogs.com/Dotaer/p/2638738.html
Copyright © 2011-2022 走看看