开发者社区> soledad_lhc> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

重构中对设计模式的反思

简介:     什么是设计模式?       每一类编程语言都具有其自身的特性,就像是面向对象的语言,其特性就是封装,继承,多态,抽象. 同时,使用每一类编程语言开发软件时也都有一些设计准则,这些准则保证了软件的质量,即具有良好的设计.         而设计模式则是广大软件开发人员总结出的开发经验技巧,它们利用编程语言的特点,实现这些准则.因此,可以想象,当我们对设计模式熟悉到一定程度后,在设计系统时,我们眼里就会变得没有设计模式,只有设计准则,真正达到手中无剑,心中有剑的境界。
+关注继续查看

    什么是设计模式?


      每一类编程语言都具有其自身的特性,就像是面向对象的语言,其特性就是封装,继承,多态,抽象. 同时,使用每一类编程语言开发软件时也都有一些设计准则,这些准则保证了软件的质量,即具有良好的设计.

   

    而设计模式则是广大软件开发人员总结出的开发经验技巧,它们利用编程语言的特点,实现这些准则.因此,可以想象,当我们对设计模式熟悉到一定程度后,在设计系统时,我们眼里就会变得没有设计模式,只有设计准则,真正达到手中无剑,心中有剑的境界。


    在学习设计模式时,究竟要学什么?

        

       以前,在开始这个阶段学习的时候,有童鞋问过我,这么多东西,究竟要学什么?  学习什么,还要看这个东西是用来做什么的,当然是主要学习这个模式主要解决了什么问题。


    在设计模式的书中,我们会看到一个名为"意图"的部分。意图是什么?这里,这个意图回答了如下问题:

       1,设计模式是做什么的?

       2,它的基本原理和意图是什么?

       3,它解决的是什么样的特定设计问题? 

     但是许多设计模式的意图部分都没有说明模式解决的主要问题,更多的描述的模式是做什么的,怎么用。


  为什么要着重理解设计模式解决了什么问题呢? 因为模式之所以 存在,就是为了解决问题,所以要了解在某种情况下模式是否真的有所帮助,必须了解它们有助于解决什么问题。


    其次学习的才是它是如何解决问题的。可是很多人上来估计都本末倒置了,上来就学它怎么解决问题的,忽略了最简单最重要的东西。


   应用设计模式中容易出现哪些问题?

  

 

在学习设计模式后,作为初学者,容易出现两个问题:


      1,过度设计:代码的灵活性和复杂性超出所需。

 

    有些程序员之所以这样做,是因为他们相信自己知晓未来的需求。他们推断,今天就把设计方案设计的更灵活,以适应明天的需求。但是,如果预计错误,这可是个巨大的浪费。造成了“用大炮去打蚊子”的窘境。

 

    敏捷开发原则告诉我们,不要为代码添加基于猜测的,实际不需要的功能,如果不清楚一个系统是否需要某个模式,一般就不要急于去实现它,事实上,在需要的时候通过重构去实现这个模式并不困难。(选自《大话设计模式》)

 

       2,设计不足的问题:比起过度设计,这个要常见的多。

      例如,在初次做机房收费系统时,我们重在实现功能,而忽略了系统整体的结构,如果真正做一个软件用这种方法,那么,在系统交付使用后,运维将变得异常困难,当软件变成大泥球后,我们只能去尝试重构,推倒重来了。


  如何恰当使用设计模式?


     用模式改善既有设计优于在设计早期使用模式,通过演进得到设计而不是采用大规模的预先设计,通过重构实现,趋向和去除模式,而不在设计早期使用模式。将模式的使用延迟,既避免了过度设计的问题,也对系统中设计不足进行了思考。

 

   通过逐步改进代码的设计问题,就能够逐渐嗅出代码的坏味道,发现了哪里有问题,设计的改进就成功了大部分。



                                                                                                 


                                                                                                          ——文章参考《大话设计模式》& 《重构与模式》


 

 



   




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SAP Fiori里两种弹出对话框(popup dialog)设计
This blogs introduces the tips how to find the location of source code where the popup dialog is raised. There are two kinds of popup dialogs in Fiori ui.
55 0
对于“机器视觉(computer version)”的反思
做图像有一段时间了,几个问题进行反思,欢迎讨论 1、机器视觉的本质是什么? 我认为就是通过计算机和数学的方法,对一定形式存储的2d或3d的视觉信号进行增强、延伸,以增加信号的强度; 2、机器视觉的第一原则是什么? 在能够容忍的速度下完成任务。
652 0
《DirectX 9.0 3D游戏开发编程基础》 第二章 绘制流水线 读书笔记
模型的表示 场景:物品或模型的集合 任何物品都可以用三角形网络逼近表示。我们经常用以下术语描述三角形网络:多边形(polygons)、图元(primitives)、网络几何单元(mesh geometry)。
936 0
+关注
soledad_lhc
csdn博客:http://blog.csdn.net/lhc1105
508
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载