`

学习设计模式的一些常见问题

阅读更多
根据最近热心读者的反馈,这里列出来一些常见的设计模式的问题,进行解答。如何领悟设计模式中的面向对象思想,还是请下载《漫谈设计模式》
学习设计模式的一些常见问题
1. 模式有没有标准形式?
GoF为了描述每一种设计模式,给它们定义了四个基本要素,旨在模式使模式能够得到广泛传播,这并不代表GoF给出的模式就是标准模式。事实上,他们也没有给每一种模式给出标准,而是很多地方给出了它们可能的变化,比如像组合(Composite)模式,有透明的组合模式,也有安全的组合模式,还例如观察者(Observer)模式,有push和pull两种形式。

这些设计模式只是为常见问题给出经验人士的一个参考方案,避免我们重复的发明轮子,而没有血统之分(哪个标准,哪个不标准),所以这个问题是个伪命题。
2. 设计模式和OO什么关系?
设计模式最初引入的时候,正处于面向对象设计高速发展时期,那些模式都是来自成功的面向对象系统的某些部分,所以这23个最基本的模式都是关于面向对象的,但这不表示只有面向对象才有模式。我们知道,模式是是某一上下文环境中一个问题的常用解决方案,那么,SOA(Service-Oriented Architecture)可以有模式,Agile也可以有模式,OSGI(Open Services Gateway initiative)也有模式。
3. 能不能创造新的设计模式?
完全可以,只要你能给一个上下文的问题给出一个通用的解决方案,并能使用GoF的四个基本要素描述它们。但是要避免重复的发明轮子,你必须了解你创造的是否已经存在,或者是否是已存在模式的变种。
4. 学习了设计模式,就等于学会了设计?
学习设计模式只是借鉴OO专家的成功经验,要学会设计,还得向他们一样,学会使用OO的眼光看待问题,解决问题。这样,在解决问题的过程中,模式就会手到擒来,并且自然地变化它们以适应你的问题本身。
5. 设计模式是OO设计的根本吗?
解决问题才是根本,模式只是关于解决问题的经验总结。笔者最初学习设计模式之后,以为优雅的设计就是尽可能的使用设计模式,所以在解决问题是刻意的套用它们,出现了一些拙劣的设计。后来读取了Eric Evans的《Domain-Driven Design: Tackling Complexity in the Heart of Software》一书,才意识到为领域建模的重要性,为解决问题,要为你的领域问题建立合理的模型,既然OO能够为软件编程带来巨大的变化,我们就要学会使用OO的眼光分析问题,享受OO给编程带来的莫大好处。

于是紧接着,在后来的一个软件开发中,我开始从问题本质入手,“忘却”模式,为问题提取模型,等设计开发完成之后,发现,我已经自然而然的使用了组合(Composite)模式和解释器(Interpreter)等模式。至此,我才意识到使用OO眼光分析问题的重要性,所以,这本书籍并不是单纯介绍模式的书籍,而是和大家一起探讨OOP,分析OOP给编程带来的好处,希望阅读完本书的人都能开始使用OO的眼光分析问题。
6. 软件的核心是什么?
软件的核心是模型,为复杂领域问题提取精炼的模型是根本。我们要学会使用OO这把利器,借助它的眼光来分析问题解决问题,这样才能做出客户满意的软件。
分享到:
评论

相关推荐

    设计模式实例源码

    包含了23种常见的设计模式源码,比较适合新手学习参考

    研磨设计模式(完整带书签).part2.pdf

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    常见设计模式的解析和实现.pdf

    常见的 20 个设计模式好好复习并且逐个用 C++实现了一 遍, 适合广大开发者学习使用,看不懂 UML 结构图和时序图,UML 图解释的类与类之间的关系,时序图 解释的是各个对象的实现方式,两者结合在一起看才能加深对设计...

    设计模式精解及面试攻略

    全书共9章,第1章全面概述本书主要内容,帮助读者理解;...第7章针对所有设计模式向初学者提供一些提示;第8章包括常见的面试问题及实际示例;第9章涵盖Java面试问题和其他的一些概念,如MVC模式等。

    Android-Java的常见集中设计模式学习笔记

    Java的常见集中设计模式学习笔记

    PHP设计模式(chm版)

    所有的设计模式都有一些常用的特性:一个标识(a name),一个问题陈述(a problem statement)和一个解决方案(a solution)。 1、一个设计模式的标识是重要的,因为它会让其他的程序员不用进行太深入的学习就能...

    在软件工程中,设计模式是解决软件设计中常见问题的通用可重复解决方案-.NET开发

    通过适度逼真的示例熟悉并学习设计模式。 设计模式库32个设计模式•65个适度逼真的示例什么是设计模式? 在软件工程中,设计模式是解决软件设计中常见问题的通用可重复解决方案。 设计模式不是可以直接转换为代码的...

    Java设计模式

    创建型模式关注对象的创建过程,是一类最常见的设计模式,在软件开发中的应用非常广泛。创建型模式描述如何将对象的创建和使用分离,让用户在使用对象时无须关心对象的创建细节,从而降低系统的耦合度,让设计方案更...

    C# 3.0设计模式

    学习设计模式的好书。 本书为那些充满奥秘的设计模式提供了有效的C#3.0实现。” 如果想加速.NET应用程序的开发,你就需要本书,它是解决常见编程问题的优雅的、公认的和被证明为有效的处理方式的合集。本书条理清晰...

    研磨设计模式(完整带书签).part1.pdf

    也可以作为高效学生深入学习设计模式的参考读物! 第1章 设计模式基础 第2章 简单工厂 第3章 外观模式 第4章 适配器模式(Adapter) 第5章 单例模式(Singleton) 第6章 工厂方法模式(Factory Method) 第7章...

    JS设计模式笔记和代码

    JavaScript常见的一些设计模式学习笔记和代码实现。包括工厂模式、单例模式、代理模式、发布订阅模式、中介者模式等等内容。

    java23中设计模式

    《设计模式(java版)》从最基本的设计原理及思想出发,深入讲解和剖析了23种常见的设计模式,每种模式都对应相应的案例,这些案例通俗易懂、围绕模式的核心思想,便于读者进一步理解和学习设计模式。全书共有8章,...

    ASP.NET设计模式-杨明军译(源码)

    那些以前已经体验过设计模式的读者可能希望跳过本书的第ⅰ部分,这部分介绍了gof提出的设计模式以及其他常见设计原则,包括s.o.l.i.d原则和martinfowler的企业设计模式。所有的代码示例均采用c#语言编写,但这些概念...

    设计模式整体框架与结构

    设计模式是软件开发中用于解决常见问题的一套最佳实践和经验总结。它们有助于提高代码的可重用性、可读性和可靠性。以下是设计模式的关键要点: 定义:设计模式是一种在软件设计过程中反复出现的问题的解决方案。...

    JavaScript设计模式 (美)哈梅斯(Harmes,R), (美)迪亚斯(Diaz,D)著 源码+PDF

    为了让每一章中的示例都尽可能地贴近实际应用,书中同时列举了一些JavaScript程序员最常见的任务,然后运用设计模式使其解决方案变得更模块化、更高效并且更易维护,其中较为理论化的例子则用于阐明某些要点。...

    后端-设计模式-java-精讲

    1. **初学者**:对设计模式感兴趣的初学者可以通过本书系统地学习和理解常见的设计模式,掌握软件开发中常用的解决方案和设计思想。 2. **软件开发者**:对于正在从事软件开发工作的开发者来说,设计模式是提高代码...

    C++设计模式大总结

    包括C++的常用设计模式,大总结与常见使用测试,一个VS工程,方便学习、复习和修改增加

    常见设计模式的解析和实现(C++)

    常见设计模式的解析和实现(C++),写得比较通俗易懂,内含本书源码,对想学习设计模式的初学者是不错选择的读物,用C++语法讲述的.

    常见的java设计模式,chm格式,附带例子说明

    常见的java设计模式,chm格式,附带例子说明 主要分为创建模式,结构模式和行为模式三大部分 相信能加深对java设计模式的理解和学习

    公开课第六节:自动化测试的设计模式.mp4

    光荣之路吴老公开课视频教学,...公开课第六节:自动化测试的设计模式.mp4 公开课第七节(1):自动化测试的设计模式2.avi 公开课第八节:自动化测试的设计模式3.avi 公开课第九节:多线程和自动化测试的并发模式.mp4

Global site tag (gtag.js) - Google Analytics