设计模式
设计模式是规则吗?
地上本没有路,走得人多了也就成了路。设计模式如同此理,它是经验的传承,并非体系;是被前人发现,经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。
设计模式是架构吗?
架构和模式应该是一个属于相互涵盖的过程,但是总体来说架构更加关注的是所谓的High-Level Design,而模式关注的重点在于通过经验提取的“准则或指导方案”在设计中的应用,因此在不同层面考虑问题的时候就形成了不同问题域上的模式。模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。
设计模式,软件的永恒之道?
这个问题没有答案,有的只是讨论,看一下一位前辈结合建筑学得出的几点心得吧:
和建筑结构一样,软件中亦有诸多的“内力”。和建筑设计一样,软件设计也应该努力疏解系统中的内力,使系统趋于稳定、有生气。一切的软件设计都应该由此出发。
任何系统都需要有变化,任何系统都会走向死亡。作为设计者,应该拥抱变化、利用变化,而不是逃避变化。
好的软件只能“产生”而不能“创造”,我们所能做的只是用一个相对好的过程,尽量使软件朝向好的方向发展。
需要设计模式吗?
答案是肯定的,但你需要确定的是模式的应用是否过度?我得承认,世界上有很多天才的程序员,他可以在一段代码中包含6 种设计模式,也可以不用模式而把设计做得很好。但我们的目标是追求有效的设计,而设计模式可以为这个目标提供某种参考模型、设计方法。
我们不需要奉GOF的设计模式为圭臬,但合理的运用设计模式,才是正确的抉择。很多人看过GOF的《Design Patterns》,对这23 种模式也背得滚瓜烂熟。但重要的不是你熟记了多少个模式的名称,关键还在于付诸实践的运用。为了有效地设计,而去熟悉某种模式所花费的代价是值得的,因为很快你会在设计中发现这种模式真的很好,很多时候它令得你的设计更加简单了。
其实在软件设计人员中,唾弃设计模式的可能很少,盲目夸大设计模式功用的反而更多。言必谈“模式”,并不能使你成为优秀的架构师。真正出色的设计师,懂得判断运用模式的时机。还有一个问题是,很多才踏入软件设计领域的人员,往往对设计模式很困惑。对于他们来说,由于没有项目的实际经验,OO 的思想也还未曾建立,设计模式未免过于高深了。其实,即使是非常有经验的程序员,也不敢夸口对各种模式都能合理应用。[--摘自wayfare的设计之道]
http://www.cnblogs.com/Terrylee/archive/2005/12/09/293509.html
分享到:
相关推荐
第一部分 模式编程原理 第1章 模式概述 1.1 模式的概念 1.1.1 什么是模式 1.1.2 模式可以做什么 1.2 模式与架构 1.2.1 什么是架构 1.2.2 架构和模式的关系 1.3 从面向对象编程到模式编程 1.3.1 关于封装的...
CANFDRS-100IE和CANFDUM-100A 转换器是一款智能协议转换器,支持串口与CAN(CANFD)之间转换。使用前需要先设置好要转换的CAN类型是普通CAN还是CANFD。 转换器给出了四种转换模式供选择,包括:透明转换、透明带标识...
本文主要简单介绍了一下关于STM32的ADC的两种转换模式,一下来学习一下
Qt-Soem-通过CSP模式(周期同步位置模式)控制一个电机转圈圈-添加代码注释-CSDN.zip EtherCAT主站-SOEM专栏的源代码。 EtherCAT主站SOEM -- 19 --Qt-Soem通过CSV模式控制一个电机转圈圈这一篇博客的源代码,博客...
物流行业商业模式转型趋势初探:新物流:下一站赢家?.pdf
Qt-Soem-通过CSV模式(周期同步速度模式)控制一个电机转圈圈-添加代码注释-CSDN.zip EtherCAT主站-SOEM专栏的源代码。 EtherCAT主站SOEM -- 18 --Qt-Soem通过CSV模式控制一个电机转圈圈这一篇博客的源代码,博客...
针对局部凸凹模式算法对旋转纹理图像描述的不足,提出了局部凸凹计数模式进行旋转不变纹理描述。...两个纹理数据库和一个掌纹数据库上的实验充分表明完备局部凸凹计数模式是一种有效的旋转不变纹理特征提取算法。
适配器模式(Adapter Pattern)是一种结构型设计模式,旨在将一个类的接口转换为客户端期望的另一个接口,从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通过引入一个适配器类,解决了接口不...
社会资源配置格局的变化:从“一维模式”向“三维模式”的转型讲稿.pptx
生活中有很多Adapter的例子... Adapter模式应该是设计模式中一个轻量级的模式,实现起来也比较简单,有时候不经意中,你可能就已经实现了一个Adapter模式,只是自己没有发现而已。本文将通过一个范例介绍 Adapter模式。
PDF和各种格式的互相转换,分有两种模式,一种是分块模式,还有一种是流畅的一体模式
通过比较基于可能世界模型的概率数据在关系数据模型和XML数据模型中的表示方法,根据概率属性与普通属性的...实例分析结果表明该算法是有效的,也为现存的概率关系数据与概率XML数据之间提供了一种有效的模式转换方法。
社会资源配置格局的变化从一维模式向三维模式的转型讲稿PPT学习教案.pptx
本文回顾了一项以翻转课堂模式为对象的长期实验,该模式在长江大学的124名一年级非英语专业本科生中教授翻译技能。 这项研究的参与者包括对照组(CG)的62名非英语专业的大学生和治疗组(TG)的62名非英语专业的大...
基于信息技术的新型教学模式 翻转课堂研究述评,彭秀兰,夏泉,翻转课堂是近年来十分流行的一种新的课堂教学方式。它是一种教师在课前为学生提供自主学习的学习资源,在课上注重进行解答学生的
工厂模式:工厂模式是一种创建型模式,它定义了一个用于创建对象的接口,让子类决定实例化哪个类。 单例模式:单例模式是一种创建型模式,它保证一个类只有一个实例,并提供了全局访问点。 适配器模式:适配器模式是...
Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...
本书不仅是高级设计模式的最佳指志,而且解决...本书还包括以下内容:架构模式、事务和持久性模式、客户端交互模式、主键一成策略。用Ant构建系统的最佳实践、JUnit测试策略。如何使用JDO和EJB作为企业bean的替代工具。
单例模式:某个类只能有一个实例,提供一个全局的访问点。 简单工厂:一个工厂类根据传入的参量决定创建出那一种产品类的实例。 工厂方法:定义一个创建对象的接口,让子类决定实例化那个类。 抽象工厂:创建相关...
ADC单次转换,规则通道的外部触发为定时器3的TRGO,定时器3TRGO事件来源于更新事件,每500ms更新一次,即ADC每500ms转换一次 ADC1开启3个规则通道,转换序列为:通道0(PA0),通道1(PA1),通道2(PA2) 在规则...