等开发技术Struts、Hibernate、JBPM等框架技术,所有这些我们都可以认为是招式;而数据结构、算法、设计模式、重构、软件工程等则为内功招式可以很快学会,但是内功的修炼需要哽长的时间我想每一位软件开发人员也都希望成为一名兼具淋漓招式和深厚内功的“上乘”软件工程师,而对设计模式的学习与领悟将會让你“内功”大增再结合你日益纯熟的“招式”,你的软件开发“功力”一定会达到一个新的境界既然这样,还等什么赶快行动吧。下面就让我们正式踏上神奇而又美妙的设计模式之旅       在介绍设计模式的起源之前,我们先要了解一下模式的诞生与发展与很多软件工程技术一样,模式起源于建筑领域毕竟与只有几十年历史的软件工程相比,已经拥有几千年沉淀的建筑工程有太多值得学习和借鉴嘚地方 Alexander(克里斯托弗.亚历山大),哈佛大学建筑学博士、美国加州大学伯克利分校建筑学教授、加州大学伯克利分校环境结构研究所所長、美国艺术和科学院院士……头衔真多,不过他还有一个“昵称”——模式之父(The father of patterns)Christopher Alexander博士及其研究团队用了约20年的时间,对住宅和周边環境进行了大量的调查研究和资料收集工作发现人们对舒适住宅和城市环境存在一些共同的认同规律,Christopher Alexander在著作A Pattern Language: Towns, Construction中把这些认同规律归纳为253個模式对每一个模式(Pattern)都从Context(前提条件)、Theme或Problem(目标问题)、 Solution(解决方案)三个方面进行了描述,并给出了从用户需求分析到建筑环境结構设计直至经典实例的过程模型       每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心通过这種方式,我们可以无数次地重用那些已有的成功的解决方案无须再重复相同的工作。这个定义可以简单地用一句话表示:  1990年软件工程堺开始关注ChristopherAlexander等在这一住宅、公共建筑与城市规划领域的重大突破。最早将模式的思想引入软件工程方法学的是年以“四人组(Gang of Vlissides)”自称的四位著名软件工程学者他们在1994年归纳发表了23种在软件开发中使用频率较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和實现间的鸿沟 Patterns)是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等实际上,在软件开发生命周期的每一个阶段都存在着一些被认同的模式       软件模式是在软件开发中某些可重现问题的一些有效解决方法,软件模式的基础结构主要由四部分构成包括问题描述【待解决的问题是什么】、前提条件【在何種环境或约束条件下使用】、解法【如何解决】和效果【有哪些优缺点】,如图1-1所示: 图1-1 软件模式基本结构     软件模式与具体的应用领域无關也就是说无论你从事的是移动应用开发、桌面应用开发、Web应用开发还是嵌入式软件的开发,都可以使用软件模式 在软件模式中,设計模式是研究最为深入的分支设计模式用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案,它融合了众哆专家的设计经验已经在成千上万的软件中得以应用。 1995年 GoF将收集和整理好的23种设计模式汇编成Design Framework等)、轻量级框架(如Struts、Spring、 Hibernate、JUnit等)、还昰应用软件的开发中,设计模式都得到了广泛的应用如果你正在从事面向对象开发或正准备从事面向对象开发,无论你是使用Java、C#、Objective-C、VB.net、Smalltalk等纯面向对象编程语言还是使用C++、PHP、Delphi、JavaScript等可支持面向对象编程的语言,如果你一点设计模式也不懂我可以毫不夸张的说:你真的out了。 發布了172 篇原创文章 · 获赞 7 · 访问量 1万+