10

设计模式的局限性与适用性

 4 years ago
source link: https://blog.csdn.net/lovelion/article/details/12167069
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

设计模式的局限性与适用性

LoveLion 2013-09-29 16:14:44 5072

       《设计模式》的出版,是软件开发领域的一个关键转折点。设计模式理论的出现,让我们对软件的关注点,从如何在特定语言中实现最好的算法,提升为如何在特定环境下找到特定软件问题的最佳解决办法。这个转变不是一夜完成的,因为在这本书诞生前,软件模式运动已经进行多年。但这本书引领我们超越了在代码重用上的争议,上升到设计重用的高度;这本书第一次明确宣布了模式时代的到来。

       审读此书手稿时,我感到非常震撼——它使用的抽象手法是如此轻易,而又清晰地描述了设计模式。对开发者来说,不再需要就算法、基于特定语言的对象构造、循环或条件争得面红耳赤,而可以用Visitor或Flyweight这样简洁的模式名一下子将原来需要几页纸才能说清楚的实现细节、设想、限制和适用性准确定义。团队成员间的有效沟通,无疑是软件开发的一个要素,设计模式恰能在这里起到重要作用,有了它,开发者可以在比以往高得多的抽象层面上实现准确、清晰沟通。

       我当时最感兴趣的是Visitor模式。那时候我一直在从事后端编译器开发工作,读完手稿后,我马上根据Visitor模式重构了代码。重构后的编译器变得更为灵活、易于扩展和维护,队友理解也容易多了。而Chain of Responsibility则一直是我的最爱,因为它非常适用于我过去20年一直从事的分布式系统和中间件工作。我在不少系统中成功使用了这个模式。和其他很多模式一样,第一次听到Chain of Responsibility时,你不会有什么特别感觉。而我这么多年已经看到太多脆弱而笨拙的分布式系统了,如果他们的设计者运用这个模式,完全可以避免这些问题。

       当然,设计模式本身有其适用范围,这是我们不得不考虑的。过去10年,Erlang和Haskell等函数式编程(FP)语言引起了越来越多人的兴趣。而一些著名的FP语言程序员甚至公开宣称:《设计模式》讲的模式并不适用于FP。我自己已经从OOP转到FP,因此非常同意这种观点。《设计模式》的关注点在OOP,确实不太适合FP语言。此外,设计模式本身已在FP中长期存在,绝大多数时候,它们本身就已经是这种语言的一个组成部分了。

       局限性和适用性,本身就是设计模式的一个部分。懂得这些模式,就意味着我们不仅要知道什么时候该用,也要知道什么时候不该用。作为2009年的软件从业者,我们可以很轻松接受这个事实了吧。

20130929161016578

【本文转自《程序员》2009年12月刊 特别专题:设计模式15年】 

文/Steve Vinoski 译/罗小平

作者简介:Steve Vinoski,《Design Patterns》的审稿人。著名中间件技术专家,他被公认为是CORBA领域里世界领先的专家之一,《IEEE Internet Computing》专栏作家,是《Advanced CORBA Programming with C++》【中译名:《基于C++ CORBA高级编程》】一书的作者之一。

Blog: http://steve.vinoski.net/blog/

 20130929161006328        

20130929161023078
   20130929161030265

【作者:刘伟   http://blog.csdn.net/lovelion


Recommend

  • 82

    消费金融背后的高风险,技术局限性是最大阻碍

  • 36

    文/伯通2017年9月3日,一个男婴降生在湖南省长沙市望城区妇幼保健院。不幸的是,他的出生伴随着“13号染色体长臂缺失综合症”、“脑发育不良”、“虹膜缺损”等一系列缺陷和疾病。这意味着,小男孩很可能会...

  • 36
    • www.linuxprobe.com 6 years ago
    • Cache

    人工智能的三大局限性

    导读 老实说,AI绝对有益于网络安全,但AI并非万灵丹,炒作得再多也不是。事实上,与其他任何技术一样,AI也有其局限性。 任何技术都有局限性,AI和人工智能也不例外。其局限有三:检测、功耗和人力。

  • 23

    最近在 Udemy 上学 Stephen Grider 的课程 Machine Learning With JavaScript。由于是个人业余练习,课程中的代码我都用纯函数式编写。其中有一部分要解决这个问题:给定一个矩阵数据,例如 const data =

  • 14
    • blog.securemymind.com 4 years ago
    • Cache

    适用性声明SoA

    适用性声明SoA – 安全意识博客Skip to content 虽然适用性声明在ISMS中是至关重要的,并且附于认可的ISMS证书。适用性声明是一项科学态度,昆明亭长朗...

  • 14

    开发者探讨Saga地图对益智手游的适用性 发布时间:2020-12-10 08:45:07 Tags:三消游戏,

  • 18

    Overview# 不管是公司或者个人都会有不同的开发习惯,通过建立项目模板,既可以使开发人员聚焦于业务功能的开发,也可以在一定程度上...

  • 7

    Overview# 在前面的文章里有针对 abp 的项目模板进行简化,构建了一个精简的项目模板,在使用过程中,因为我们暴露的 api 需要包含版本...

  • 6

    bigaokeji.cn 功能设计、应用场景、成功案例、官方舆论导向等,不难看出,企业微信的使命就是帮助企业做私域流量的沉淀与转化,毕竟“用微信做生意”这一刚需,早已存在7、8年了,微信团队也不是傻子,只是以前他们实在想不到折中办法,一边要千方百计帮商家连接...

  • 6

    贝壳王子运动耳机浅评:独立挂耳适用性更全面_原创_新浪众测

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK