提交需求
赛事与广告咨询合作,请填写需求表单,我们会在第一时间与您联系!
设计模式的基本知识
网址: www.voossi.com 微信:voossiwx
如果你已经为产品或软件应用编写过程序,无论多少你很可能已经用过许多设计模式,但是这些模式不一定是最好用的或者最标准的设计模式。
然而,实现设计模式与“使用”设计模式之间有显著的差异。经常接触设计模式的人就能够理解这两者区别,或者说可以很轻易辨别。
关键是,对程序设计员来说,设计模式不是新东西。
在下面这篇文章中,我试着从基础层面解释设计模式,并一起研究不同模式的细节以及另一篇文章中的例子。
首先,我认为去了解我们在日常生活中有意或无意遵循的非技术模式,是理解设计模式的最好方法。
让我们用求职时的许多简历为例。虽然每个人的简历看起来都不一样,但他们的目标职位是一样,并借助简历让招聘方知道他们擅长的领域或他们如何胜任这份工作。
大多数求职者都知道道他们需要以标准化的WORD文档投递一份简历,其中需包含一系列详细的基础信息。
因此,每个人都投递一份简历,其中包含一系列特别的信息,这就是一种模式。
如果你想称之为模板而不是模式,也可以称作设计模板。
在现实生活中,有许多的事物都是模式。或许一些人会喜欢一下的例子:
全世界所有的厨师都用相同的方法烹饪披萨和薯条。尽管表面放的东西或调味的方式不一样。这也是一种模式。
每辆汽车的设计都遵循一个基本的设计模式,即配备四个轮子、一个方向盘、核心行驶系统——油门-刹车-离合器等等。
在设计方面,所有反复建造或者生产的东西都毫无例外地遵循一个模式。不管是什么,无论是汽车、披萨、取钞机,甚至是牙刷都是如此。
用标准方式把逻辑/机械/技术的代码输入软件,这种设计自此闻名,并且普及到软件设计模式研究领域。
主要有两个原因:
1.坚持一个标准
2.加快发展速度
别急,我会仔细解释。
首先,我们看看为何坚持一个标准模式很有趣。用我们前文讨论过的简历为例。
也许有一两个申请人通过邮件发送了自己的职位申请,但没有用合适的格式,没有在邮件上添加附件等等。这些人中一两个没有遵循模式,最后也不太可能获得这份工作。为何?原因是他们偏离了已有的完善模式,这不会为职位招聘者所喜。
生活中有没有人偏离了既定模式,变得“很酷”?这种行为可以视为创新吗?
是的,有时候有人以一份呈现方式与众不同的简历,从其他人中脱颖而出,斩获了工作。通常我听说过网页设计师会在博客上传作品或其他类似的东西,编辑一个展示自己工作的光碟或者创造一个卡通人物解释自己的工作,从而获得一个重要职位。
但是,这是试验(创新来自成功的试验)。
在多数的设计中,由于时间压力、预期结果等因素,你承担不了实验。不过,有时候一些有趣的项目确实值得进行一些实验。
在设计中,我们不能把简单的事情复杂化,比如银行存款不必复杂化,只需几种既定模式即可,不需要101种方式。因此,遵循的一个已有的、经过检验的模式是有道理的。
同样,大多数设计模式有变体,在一些变体流行后,这个变体也会成为一个新的标准模式。
人们期待(至少含蓄地)当下的设计应当遵循市场已有的相似产品或软件的设计模式。
这就是坚持标准模式代码或设计模式会帮助软件发展、加快发展速度并且消除人们对于未经检验的新执行方式存在质疑的原因所在。
遵循一个标准的设计模式,也有增进按树状分布或等级状分布的软件架构师、版主、团队领导、开发者轻松交流的优势,人们可以就某事需要“怎样”开发什么进行探讨,而不仅是“什么”应该被开发。
有时,它还会帮助测试团队。因为测试者可以凭借经验知道,遵循一定设计模式的代码能够借助一系列测试工具在特定的时间里、用具体的方式进行测试。这样已知的设计或许没有一点瑕疵,或者说没有一点“已知”瑕疵。
不会。因为不是说你遵循一个设计模式,其他什么就不会发生。大多数项目执行只与其他项目共享一些基本要素。大多数还是有差异。构建这些有差异的项目要求人们在执行中收缩或延伸标准模式。
就像是用标准的方式来做披萨,然后根据不同的要求来调味或装盘,也许是整个披萨,又或者是切好的披萨,或者还有其他什么。
在理解设计模式的重要性中,一件事情非常重要。
设计模式不是某一个特别的公司或者程序语言强加给我们的技术或框架。这意味着,它是一个开放式的概念。你有自由根据的自己的需求采取、使用或者修改它。重要的是,让它成为自己的。
事实上,所有标准的或者流行的设计模式都是可以很好地拓展。它们受到欢迎,首先只是因为许多人在用,并且许多人使用它是因为它们可以根据本人需求灵活调整。
或者你会认为一个适用于新泽西和班加罗尔公司项目的标准设计模式也同样适用于不同的公司和不同类型的项目吗?
这让我回到这句话“大多数设计模式是通用的“,意思是它们无法经常用于构建相同类型的软件。你也许听诸如“银行软件设计”或者用于一般讨论的“社交软件设计模式的东西,但只是“设计模式”。
就像好的建筑设计师需要用一生时间通过研究许多建筑造型的构建和设计。的增长自己的设计能力一样,一个软件架构师也需要学贯中西,掌握不同的软件和技术设计。
就像建筑工人需要了解完成设计的不同方法,或许是凭自身经验掌握,或许是从建筑设计口中得知。
软件开发者或程序设计员应该从自身经验或者指导团队遵循一个特别模式的软件架构师那里,了解基本的软件设计模式及其执行代码。
在文章的开头,我提到程序设计员应该都用过设计模式。以下一些遵循模式相当基础的代码实例。
1.下面是一个基本的拦截过滤器设计模式。
2.隐藏复制代码
3.
4.甚至是事件触发器,事件处理器来源于最基础的主体和观察者设计模式。我们很快会举例子来谈论模式准则,流行的变体等等。
5.如果你在C#中用了某种集合比如数组列表并且迭代数组,然会你就用到了一个基本的迭代器设计模式。
6.下面的代码是一个基本的异常处理或者连锁责任模式。
7.隐藏复制代码
8.
在软件中,除了设计模式,还有其他不同的术语,其中一些与我们目前谈到的设计模式有关,也有一些毫不相干。
我们目前谈到的东西有时可以叫做“实现设计模式”
也有其他的比如体系模式、框架模式、语言模式(大多数叫做语言构造)。
它们是出于不同水平的模式,比如说,语言模式是实现编程语言如C#或Java的模式,也作为语言特征或结构。其中一些我们已经看过。
上述的主体-观察者、拦截过滤器等等都被吸收进受欢迎的高水平程序语言中作为语言构成,仅次于C语言。
软件体系结构是软件结构的标准模型,通常指用不同的方法来放置、连接单元、层面或者层来组成完整的应用。
从代码和变成的意义上来说,这与设计模式完全无关。但是这与我们在前文讨论的原因与内容有着相同答案。
框架模式也与之前讨论的设计模式无关。当框架模式比如NET.通过内置的方法或部件来轻松地执行特别方法来处理登陆错误或者跟踪代码执行路径,这样的机制就可以被称为框架模式。
一些在NET框架中的例子包括堆栈跟踪属性、类别特征属性,会在属性和方法定义的顶部用方括号注明等等。使用这些属性时,我们就在用框架内置的模式编写代码。
希望这篇文章能够帮助大家对设计属性和相关术语有一个大致的了解。
现在我们只是谈论了什么是标准以及它们有多重要,但是我们没有谈及标准模式本身。
本篇文章以及相关的信息代码和文章得到了CPOL的开放许可。
好文推荐
十大设计师必备网站:http://www.ui.cn/detail/85933.html
四个字体设计网站推荐:http://www.ui.cn/detail/87245.html
本文是悟思翻译,如需转载或版权问题请联系我们。
译者:Gina 校对:LDW 原文作者:De Jesus Marcos
原文链接:http://www.instantshift.com/
大牛,别默默的看了,快登录帮我点评一下吧!:)
登录 立即注册