重构中对设计模式的反思

什么是设计模式?

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

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

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

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

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

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

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

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

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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGhjMTEwNQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" >

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

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

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

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

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

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

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

怎样恰当使用设计模式?

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

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

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

时间: 2024-11-03 21:55:27

重构中对设计模式的反思的相关文章

访何红辉:谈谈Android源码中的设计模式

最近Android 6.0版本的源代码开放下载,刚好分析Android源码的技术书籍<Android源码设计模式解析与实战>上市,我们邀请到它的作者何红辉,来谈谈Android源码中的设计模式,以及近期Android开发中的一些热点话题. 受访嘉宾介绍: 何红辉(@MrSimp1e),前友盟Android工程师,活跃于国内各大技术社区,热爱开源,热爱技术,热爱分享.Android开源库 AndroidEventBus . Colorful 作者, 开发技术前线 站长,<Android源码

使用Micrisoft.net设计方案 第一章 企业解决方案中构建设计模式

第一章企业解决方案中构建设计模式 我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统.如果直接去设计一个复杂系统,结果最终会导致失败.在设计系统的时候,先设计一个能够正常工作的系统,然后在此基础上逐步扩展.而一个好的企业设计方案就是由一些短小.简单.可靠.有效的并能够解决问题的机制组成.由这些短小精悍的机制进行组合,形成复杂的系统.而这些机制就设计模式.设计模式就是能够记录这些机制的一些描述. 企业级业务解决方案一般是复杂.性能要好.可扩展性好以及容易维护和可伸缩性强,而设计模式可以帮

面向对象编程中的设计模式

面向对象编程中的设计模式 最近在复习(预习)软考,看到了设计模式这个知识点,打算小做总结一下~~ 设计模式分为三种类型,共23种.(红色标注常用的) 创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模式.原型模式. 结构型模式:适配器模式.桥接模式.装饰模式.组合模式.外观模式.享元模式.代理模式. 行为型模式:模版方法模式.命令模式.迭代器模式.观察者模式.中介者模式.备忘录模式.解释器模式(Interpreter模式).状态模式.策略模式.职责链模式(责任链模式).访问者模式.

Spring中的设计模式

[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用] [http://www.geek521.com/?p=6883] [http://blog.csdn.net/fg2006/article/details/6435410] [http://ylsun1113.iteye.com/blog/828542 ] 1.简单工厂  又叫做静态工厂方法(StaticFactory Method)模式,但不属

[Android]GOF23种设计模式 &amp; Android中的设计模式

GOF23种设计模式 设计原则: 1. 单一职责原则(SRP):就一个类而言,应该仅有一个引起它变化的原因 2. 开放-封闭原则(OCP):软件实体(类.模块.函数等)应该可以扩展,但是不可修改.即对于扩展是开放的, 对于修改是封闭的. 3. 依赖倒转原则: A. 高层模块不应该依赖低层模块,两个都应该依赖抽象.B.抽象不应该依赖细节,细节应该依赖抽象.说白了,就是要针对接口编程,不要对实现编程. 4. 迪米特法则(LoD):如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用.如

Java中单态设计模式

Java中单态设计模式 2011-09-23 16:38:46|  分类: Java |  标签:technology!  |举报|字号 订阅 此博文是转自新浪博客中一名叫做"俊俊的BLOG“用户的一篇博文.感觉此博文确实很不错,所以在此拿出来分享一下!(笔者只是对其所举的代码略做了一些修改) 一概念: 设计模式:设计模式是指经过大量的实践总结和理论化之后的优选的代码结构.编程风格.以及解决问题的思路. 单态设计模式:采取一定的方法保证在整个软件系统中,对某个类只能产生一个对象实例,并且该类只提

设计模式之反思(一)

这几天,师哥给我们讲了一下设计模式.让我们从学习方法及对各个模式的理解重新洗礼了一遍.在此,我整理了一下自己的笔记及自己的一些感受. 一.结构型 结构型模式处理的是类与类或者说对象与对象的关系. 1.外观模式-Facade (1) 此模式定义了一个高层接口,从而使子类更容易使用,并提供了一个统一的界面. (2)优点: 将用户和子系统分开,减少其耦合度,有利于系统维护,同时扩展性也比较好 (3)原则: 符合迪米特法则,违背了开闭原则 2.桥接模式-Bridge 如图,我们可以看出桥接模式的主体架构

[程序示例]Objective-C中的委托设计模式(牛仔与姑娘)

今天整理电脑翻到以前自学Objective-C时写的一个练习委托设计模式的一个小程序,就po上来和大家分享,顺便自己也复习一下OC中的委托. Objective-C中的委托设计模式是和协议分不开的. 协议呢,就是使用了这个协议后就要按照这个协议来办事,协议要求实现的方法就一定要实现.(在Objective-C2.0中可以在协议里选择是否必须实现某种方法,用关键字@optional和@required) 委托的话,顾名思义就是自己处理不了的事情,委托他人按照协议里写好的条款来办理这件事. 具体实现

使用Microsoft设计方案 第一章 企业解决方案中构建设计模式

第一章企业解决方案中构建设计模式 我们知道的系统总是由简单到复杂,而不是直接去设计一个复杂系统.如果直接去设计一个复杂系统,结果最终会导致失败.在设计系统的时候,先设计一个能够正常工作的系统,然后在此基础上逐步扩展.而一个好的企业设计方案就是由一些短小.简单.可靠.有效的并能够解决问题的机制组成.由这些短小精悍的机制进行组合,形成复杂的系统.而这些机制就设计模式.设计模式就是能够记录这些机制的一些描述. 企业级业务解决方案一般是复杂.性能要好.可扩展性好以及容易维护和可伸缩性强,而设计模式可以帮