重构中对设计模式的反思

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

    什么是设计模式?


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

   

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


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

        

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


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

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

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

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

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


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


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


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

  

 

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


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

 

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

 

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

 

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

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


  如何恰当使用设计模式?


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

 

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



                                                                                                 


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


 

 



   




目录
相关文章
|
8月前
|
设计模式 Java API
重构旧代码的秘诀:用设计模式 - 适配器模式(Adapter)给Java项目带来新生
【4月更文挑战第7天】适配器模式是解决接口不兼容问题的结构型设计模式,通过引入适配器类实现目标接口并持有不兼容类引用,实现旧代码与新接口的协作。适用于处理兼容性问题、整合遗留代码和集成第三方库。应用时,识别不兼容接口,创建适配器类转换方法调用,然后替换原有引用。注意保持适配器简单、使用组合和考虑扩展性。过度使用可能导致系统复杂和维护成本增加,应谨慎使用。
120 4
|
设计模式 算法 Java
设计模式第十五讲:重构 - 改善既有代码的设计(下)
设计模式第十五讲:重构 - 改善既有代码的设计
305 0
|
5月前
|
设计模式 Java
重构你的代码:探索Java中的混合、装饰器与组合设计模式
【8月更文挑战第30天】在软件开发中,设计模式为特定问题提供了结构化的解决方案,使代码更易理解、维护及扩展。本文将介绍三种常用的 Java 设计模式:混合模式、装饰器模式与组合模式,并附有示例代码展示实际应用。混合模式允许通过继承多个接口或抽象类实现多重继承;装饰器模式可在不改变对象结构的情况下动态添加新功能;组合模式则通过树形结构表示部分-整体层次,确保客户端处理单个对象与组合对象时具有一致性。
50 1
|
5月前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
136 0
|
8月前
|
设计模式 传感器 数据处理
探索设计模式的魅力:为什么你应该了解装饰器模式-代码优化与重构的秘诀
装饰器模式是一种设计模式,它允许在运行时向对象添加额外的职责,而无需修改其代码。这种模式提供了一种动态扩展对象功能的方法,同时保持了对象的单一职责原则。本文介绍了装饰器模式的基本概念、原理、优势、适用场景、实现方法、最佳实践和注意事项。通过装饰器模式,可以将多个行为组合成一个更复杂的行为,而无需使用继承或大量的接口实现。装饰器模式适用于需要对一个对象进行一系列的增强处理的情况,而这些增强处理可以以一种松耦合的方式进行组合。通过使用装饰器模式,可以提高代码的可维护性、可扩展性和灵活性,使系统更加灵活和易于维护
137 1
探索设计模式的魅力:为什么你应该了解装饰器模式-代码优化与重构的秘诀
|
设计模式 Java Apache
设计模式第九讲:常见重构技巧 - 去除不必要的!=
设计模式第九讲:常见重构技巧 - 去除不必要的!=
|
设计模式 算法 Java
设计模式第八讲:常见重构技巧 - 去除多余的if else
设计模式第八讲:常见重构技巧 - 去除多余的if else
122 0
|
设计模式 Java 测试技术
设计模式第十五讲:重构 - 改善既有代码的设计(上)
设计模式第十五讲:重构 - 改善既有代码的设计
340 0
|
设计模式 SQL 算法
【Java设计模式 规范与重构】 六 代码重构小结
【Java设计模式 规范与重构】 六 代码重构小结
209 0
|
设计模式 前端开发 Java
【Java设计模式 思想原则重构】设计思想、设计原则、重构总结
【Java设计模式 思想原则重构】设计思想、设计原则、重构总结
218 0