博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重构中对设计模式的反思
阅读量:7217 次
发布时间:2019-06-29

本文共 1207 字,大约阅读时间需要 4 分钟。

    什么是设计模式?

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

   

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

    在学习设计模式时。到底要学什么?

        

       曾经。在開始这个阶段学习的时候,有童鞋问过我。这么多东西。到底要学什么?  学习什么。还要看这个东西是用来做什么的。当然是主要学习这个模式主要攻克了什么问题。

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

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

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

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

     可是很多设计模式的意图部分都没有说明模式解决的主要问题。很多其它的描写叙述的模式是做什么的,怎么用。

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

    其次学习的才是它是怎样解决这个问题的。但是非常多人上来预计都本末倒置了,上来就学它怎么解决这个问题的。忽略了最简单最重要的东西。

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

  

 

在学习设计模式后。作为刚開始学习的人,easy出现两个问题:

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

 

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

 

    敏捷开发原则告诉我们,不要为代码加入基于推測的。实际不须要的功能,假设不清楚一个系统是否须要某个模式,一般就不要急于去实现它。其实。在须要的时候通过重构去实现这个模式并不困难。

(选自《大话设计模式》)

 

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

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

  怎样恰当使用设计模式?

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

 

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

                                                                                                 

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

 

 

   

你可能感兴趣的文章
UVALive2203 UVa10042 Smith Numbers【质因数分解+素数判定+数位之和】
查看>>
Project Euler Problem 9: Special Pythagorean triplet
查看>>
HDU5701 中位数计数【中位数】
查看>>
Python 深浅拷贝 (Shallow copy and Deep copy in Python)
查看>>
Axure
查看>>
屏幕截取工具
查看>>
C语言第七次作业---要死了----
查看>>
Jquery事件绑定冲突
查看>>
偶现bug如何处理?
查看>>
yum命令简介
查看>>
【Udacity】朴素贝叶斯
查看>>
看漫画,学 Redux
查看>>
Spark Streaming揭秘 Day19 架构设计和运行机制
查看>>
【转载】WinCE OAL中的电源管理函数
查看>>
【iOS】Objective-C简约而不简单的单例模式
查看>>
Java实现扫码二维码登录
查看>>
python之字符串的操作和使用
查看>>
eclipse搭建ssm框架
查看>>
CSS div阴影效果
查看>>
显示所有SAP图标的ABAP代码
查看>>