zoukankan      html  css  js  c++  java
  • 设计模式_简单工厂模式

    一、面向对象的编程

    1.可维护性:要改,只需要更改要改动的地方;

    2.可复用:代码单元可以再其他地方被反复使用;

    3.可扩展:要加新功能,只需很方便地增加即可;

    4.灵活性:代码单元的重新组合要很方便,以此实现新的功能。

    二、面向对象的好处

    1.封装。通过封装,比如就可以将业务实现与界面显示实现分开;通过封装,达到容易维护和扩展;

    2.继承:在没有使用继承之前,代码的技术员工资、主管工资都写在一起的话,那么要增加一个销售人员的工资时,需要改代码。而且,这份代码中的其他人员的工资实现对程序员是可见的,这是非常危险的,因为程序可以修改已有人员的工资算法。因此,在扩展时,为了不影响,而且也不应该对程序员可见已有的代码,可以将技术员、主管的工资的实现使用继承来实现。这样,增加销售人员工资实现时,只需得到工资最基本的父类即可,销售人员的实现类就由程序员自己实现。

    这里还有一个例子。

    定义一个算术父类,子类有加法、减法、除法、乘法。今后要修改加法,只需要修改加法一个类就够了,程序员都不需要知道其他的运算类。

    如果要增加其他的算法,只需要再写一个子类就行了,不需要知道其余的类

    3.多态:通过多态,客户端只需要知道父类类型就可以了,以及知道父类的方法就可以了。至于父类具体是什么子类型,可以通过简单的工厂模式来决定。这样就减少了客户端需要维护的工作量。

    三、简单工厂模式组合

    继承+多态+简单工厂模式

    四、简单工厂模式缺点

    它只是解决对象的创建问题,,但是每次由于算术算法的更改,都需要更改工厂,导致代码需要重新编译。

  • 相关阅读:
    c++ 异常处理(2)
    ajax跨域,这应该是最全的解决方案了
    浏览器Request Header和Response Header的内容
    devDependencies和dependencies的区别
    json对象按时间排序
    JavaScript里的循环方法总结
    json list数据递归生成树状层级JSON
    javaScript年份下拉列表框内容为当前年份及前后50年
    vue cli+axios踩坑记录+拦截器使用,代理跨域proxy
    使用vue2+Axios+Router 之后的总结以及遇到的一些坑
  • 原文地址:https://www.cnblogs.com/itblog/p/7236618.html
Copyright © 2011-2022 走看看