zoukankan      html  css  js  c++  java
  • 设计模式(1)

    所有编程初学者都会有这样的问题、就是碰到问题就直觉的用计算机能理解的逻辑来描述和表达待解决的问题及具体的求解过程。这其实是用计算机的方式去思考、比如计算器程序,现要求输入两个数和运算符号、然后根据运算符号判断选择运算、得到结果,这本是没有错,但这样的思维确实的我们的程序只能满足实现当前的需求,程序不容易维护,不容易服用。从而达不到高质量代码的要求。

    举例:中国古代的活字印刷技术没发明以前、当一个刻板完成以后、要需改动里面的一个字的时候、就需要全部重新刻、这样以前刻好的文字就全部白费、但活字印刷改变了这个方向:第一、要改里面的一个字就行、此为可维护;第二、这些字并非用完这次就无用,完全可以再后来的印刷中重复使用。此乃可复用、第三、若我们向加长文章的时候、只需要另刻字就行、这是扩展;第四,字的排列其实可能是竖排可能是横排,此时只需要经活字移动就能满足排列需求,此是灵活型号。

    在我们软件设计中,很多出现类似的的需求,其实客观的说,客户的要求也并不过分,不就是改几个字吗,但面对已经完成的程序代码,却是需要几乎重头来过的尴尬,这实在是痛苦不堪,说白了,原因就是因为我们原先所写的程序,不易维护、灵活性差,不容易扩展,更谈不上复用;因此面向需求变化,加班加点,对程序动大手术的那种无奈也就成了非常正常的事了。之后当我学习了面向对象的分析设计编程思想,开始考虑通过封装、继承、多态把程序的耦合度降低,传统印刷术的问题就在于所有的字都刻在同一个面上造成了耦合度太高所致,开始用设计模式使得程序更加的灵活,容易修改,并且易于复用。体会到面向对象带来的好处,那种感觉应该就如同是一中国酒鬼第一次喝到了茅台,西洋酒鬼第一次喝到了XO一样,怎一个爽字了得。

    中国古代的四大发明,另三种应该是科技的进步,伟大的创造或发现而唯有活字印刷,实在是思想的成功,面向对象的胜利。

    案例分析

    不如我们需要写一个windows的计算器,一般我们的思路是把代码复制过去就行了,改动又不大、其实代码的复制和粘贴是非常不好的编码习惯,因为当你的代码中重复的代码多到一定程度的时候,维护起来可能就是一场灾难。越大的系统代码,这种方式带来的问题越严重,变成有一原则,就是用尽可能的办法去避免重复。

    对计算器而言此处就应该是把业务逻辑和见面逻辑分开,让他们之间的耦合度下降。只有分离开,才可以达到容易维护或扩充。

    下面咱分离出这两层的代码:

    增加一个运算类:

    图片

    客户端:

    图片

    诸如上面的例子、咱已经用到了面向对象三大特性中的封装特性。

  • 相关阅读:
    利用Abot爬虫和visjs 呈现漫威宇宙
    Abot 爬虫分析-整体结构
    利用Abot 抓取博客园新闻数据
    sftp配置多个用户权限的问题
    十三、Vue中的computed属性
    十二、react-reudx之@connect 摆脱redux的繁琐操作
    十一、微信小程序-var、let、const用法详解
    十、es6之扩展运算符 三个点(...)
    九、小程序 Redux详解与在小程序中怎么使用(action和reducers)
    八、wepy代码规范
  • 原文地址:https://www.cnblogs.com/zhijianliutang/p/2250628.html
Copyright © 2011-2022 走看看