《元素模式》译后记

这本书译完至今已经有大半年了,电子工业出版社也在去年的九月正式出版了它。在此之后,我从审稿者以及读者手里得到的大部分反馈无非就是三个问题:为什么书名翻译成"元素模式"?这本书与《设计模式》这本书的关系是什么?这些模式有什么用?所以,我打算写一篇文章,谈谈我的看法。

首先,这本《Elemental Design Patterns》的书名,如果按照中规中矩的译法应该翻译成"设计模式要素",但看完全书,你会遇到一个问题,就是这本书讲的是32种可用各种编程语言实现的模式。换句话说,它是有实体的"模式",而不是抽象的"要素"。所以似乎改成"元素级设计模式"更为合适。但作为一个学术性的,得了Jolt大奖的作品,用如此之长的书名有点不太合适。因此本书的第一译者高博兄与我反复讨论,最终定了这四个字的书名。我们希望它能激发起读者好奇心,并且让读者读完之后才能理解"元素"这两个字的精妙所在。

接下来,我来说说它与GoF模式之间的关系。其实,关系就在"元素"这两个字上,元素在化学上对应的是原子,原子通常意味着不可再分性(当然,实际上还可以再分的,这里只是一个比喻)。作者在书中构建了一个设计空间,按照OOP中最简单的设计概念分成了几个不同的设计空间。然后用这种空间维度对现有的设计模式,主要就是GoF模式进行了分解。所以从粒度上来看,元素模式最重要的是其原子性,它被作者认为是不可再分的模式,而后者则是由元素模式组成的分子模式或者更大粒度的模式。这种思想在这本书中是至关重要的。

最后再来谈谈"有什么用"的问题。通常我们提到单件、工厂这些模式的时候,很容易有意无意的把模式认识成模版,来生搬硬套,但如果我们把这些模式分解成元素模式,就很容易理解到它不过是一些设计套路的组合而已,而这种套路才是"模式",它们是可以变化的,根据实际情况重新组合的,甚至还是可以作为反例的。它们并不是设计社区所流传的神话,后来者只能把它们供起来,生搬硬套。因此。模式的粒度越小,我们组合起来的灵活度就越高。当然了,和这个现实世界一样,你不知道原子的存在,物质也是这样组成的,这些模式你其实天天在用,只不过你是不是"有意识"的在用而已。这是一个设计经验的问题,比如java里面本身就用了很多工厂模式,但如果你没有意识到他是工厂模式,他可能就只是用来创建标准库的对象,一旦你自定义对象就不会追求这种创建方式的一致性,这样一来,后期维护的时候,由于你自己的库,和标准库之间有明显的设计差异,这会带来各种各样的问题。比如C++中,几乎一个库一种string类型就是一个典型的例子。元素模式的作用也是如此。

时间: 2024-07-30 06:39:54

《元素模式》译后记的相关文章

元素模式

元素模式(最新Jolt大奖得主彻底颠覆传统GoF设计模式的里程碑著作) [美]Jason McC. Smith(杰森.史密斯) 著 高博 凌杰 徐平平译 ISBN 978-7-121-23468-2 2014年6月出版 定价:69.00元 364页 16开 编辑推荐 本书介绍一类全新的设计模式--元素模式(Elemental Design Pattern).元素模式植根于软件程序设计理论,目的却在于实践性和实用性.程序设计新手与资深开发工程师都是元素模式的目标受众.它能带领学生加入软件工业大军,

元素模式是单一关系的表现,是设计模式不可再分的最小单元

当我们在软件设计中想应用设计模式时,往往是凭借设计模式的名字和需求有点类似,之后就尝试着将模式生搬硬套到其中.而真正去理解设计模式往往变得比较困难,很多书籍也仅仅是用不同方法来降低模式记忆的强度.难道设计模式不能从更加细微的层面去理解吗?当然可以,设计模式就像可以再分解的化合物一般是可在分解,这种再分解后的模式叫做元素模式(elemental design patterns , EDP). 元素模式重申了一个非常重要的思想:模式是概念,而不是结构.GoF也这样认为:"假设某语言是面向过程的语言,

javaScript中的严格模式 (译)

“use strict”状态指示浏览器使用严格模式,是javaScript中一个相对少且安全的特征集. 特征列表(非完全列举) 不允许定义全局变量.(捕获没有用var声明的变量和变量名的拼写错误) 在严格模式下引起静默失败的声明将会抛出异常(声明 NaN  =  5) 试图删除不能删除的属性将会抛出异常(delete  object . prototype) 在一个对象中的所有属性名要唯一(var x = {x1 :  “1”,  x1 : “2”}) 函数的参数名必须唯一(function s

php设计模式之单例模式(单元素模式)

单例模式: 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例.它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用. (1). 需要一个保存类的唯一实例的静态成员变量:private static $_instance; (2). 构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义: private function __construct() { $this->_db = pg_connect('xxxx')

IfcStructuralElementsDomain (结构元素领域)

IfcStructuralElementsDomain 提供了表示通常具有结构性质的不同类型建筑元素和建筑元素部分的能力.除了已在IFCSHARDBug元素模式中定义的一般使用的建筑元素之外,该架构还包含用于表示基础部分的实体,例如基脚和桩,以及包括在其他建筑元素中的一些重要结构子件,例如不同类型的显式加固部件,以及制造的特征和处理.该模式还包括一个类(ifcreinformationdefinitionproperties),用于定义钢筋要求. Types1 IfcFootingTypeEnu

IfcSharedFacilitiesElements (共享设施元素)

ifcsharedfacilitiesements定义设施管理(FM)域中的基本概念.此模式以及ifcprocesssextension和ifcsharedgmtelements提供了一组模型,这些模型可供需要共享设施管理相关问题信息的应用程序使用. ifcsharedfacilities元素模式支持以下想法: ①家具. ②将系统家具的元素分组为单个家具项. ③资产识别. ④物品清单(包括单独清单内的资产.家具和空间物品). 在IfcProductExtension模式中,IfcElement实

像计算机科学家一样思考Python (第2版)pdf

下载地址:网盘下载 内容简介  · · · · · · 本书以培养读者以计算机科学家一样的思维方式来理解Python语言编程.贯穿全书的主体是如何思考.设计.开发的方法,而具体的编程语言,只是提供了一个具体场景方便介绍的媒介. 全书共21章,详细介绍Python语言编程的方方面面.本书从基本的编程概念开始讲起,包括语言的语法和语义,而且每个编程概念都有清晰的定义,引领读者循序渐进地学习变量.表达式.语句.函数和数据结构.书中还探讨了如何处理文件和数据库,如何理解对象.方法和面向对象编程,如何使用

《一年通往作家路》扫描版-PDF

日记.随笔.游记.小小说.散文诗.回忆录. 写作是“清晨叫醒我的鸟鸣,也是午后阳光的流连”. 12个月的写作之旅,带你通往成为作家的大门,什么时候开始都不晚. 不论你想写小说还是散文,亦或想提高诗歌或回忆录写作技巧,蒂贝尔吉安的12堂写作课都能够帮你找到并开发属于自己的独一无二的声音.书中每一种写作类型都配有充满创造性的练习,并提供了丰富的写作技巧,包括对话写作以及小小说创作.通过列举著名作家的例子,比如里尔克.加利亚诺.帕慕克等,<创意写作书系:一年通往作家路>提供了至关重要的写作指导,有练

程序猿必读书单

作者:Lucida 微博:@peng_gong 豆瓣:@figure9 原文链接:http://lucida.me/blog/developer-reading-list/ 于 本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读.旨在成为最好最全面的程序员必读书单. 前言 Reading makes a full man; conference a ready man; and writing an exact man. F