【译】《学习JavaScript设计模式》(二)

原书链接Learning JavaScript Design Patterns
水平有限很多地方不通顺,错翻漏翻欢迎交流。

模式测试,原生模式&约法三章

记住并不是所有的算法啊,最佳实践啊,解决方案啊什么的都可以被称为一个完整的模式的。很可能它就缺了点什么,而社区里的那些家伙就喜欢揪着这小辫子不放,直到它经过千锤百炼出关。即使一个模式已经满足了所有模式标准,还需要经过时不时的合适的测试审查的调教才能成长为一个真正的男人,哦不,模式。

回头看看Alexander说过的,一个模式既是一个过程,也是一个完整的事物。

学习模式设计的过程中,我们遇到"原生模式"这玩意儿也不是啥大惊小怪的事。这是个啥?Well,一个还没通过模式测试毕业考试的模式通常就叫原生模式。原生模式的主人把它造出来之后拿到社区里让大家一起玩儿,但是由于年纪太小了,还没被从里到外翻云覆雨地玩。

或者把原生模式生下来的人对这一系列的测试根本没啥兴趣,给脖子上挂个出生证明就让它自生自灭去了。我们通常把这个出生证明叫做"patlets"。

也不怪他们,给这些模式写个完整的文档确实让人萌生退意。回头看看早期的一些工作,满足下列条件的模式才能成为好的模式:

  • 解决了一个特定的问题: 我写了一个模式出来,一岁出头鹅蛋脸眉眼带笑鼻子挺直嘴角上扬唇红齿白,可她只能看啥事都做不了有啥用啊。能做事儿,这是一个好的模式最关键的特征。

  • 高手都是会隐藏的: 我们知道解决问题的技术通常都是从一些出名的基本原理衍生出来的。最好的设计模式通常不直接给出问题的答案,这被人认为是解决困难问题的必要步骤。高手嘛,教的都不是形,而是意。

  • 给出的概念一定要是被证实过的: 设计模式要给他们的功能提供专业鉴定书,没有专业鉴定书的都是野路子上不了台面。只有勇士和走投无路的人才敢用那些没来历的野生模式。

  • 必须阐释清楚代码关系: 有些情况下,模式只是解释了一些模块。很多已经成型的模式可能也只是吊样,但是官方定义的模式必须阐释更底层的系统关系结构并解释清楚代码之间的关系。

看到这儿你或许觉得自己不去学习那些不太规则的原生模式没什么关系吧。可不是这样。很多原生模式也是依壁雕凿,当然不是说所有的原生模式都样儿,但是肯定有不少很好的原生模式,使用我上面告诉你的方法来自行判断吧。

为了保持模式的可重用性,我们要约法三章,并将三规则核心价值观时刻牢记心中(别问我这仨有啥区别,核心价值观记住就行了):

  1. 对目标的可用性: 模式是怎么被认为是成功的?

  2. 有用性: 为什么这个模式被认为是成功的?

  3. 适用性: 这是一个因为有广泛适用性所以能成为一个模式的设计吗?如果是,好好写文档吧。重写或者定义模式的时候,记住上面三点是非常重要的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/398411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I.Mx6 使用串口连接PSAM卡的注意事项

{背景} 1. 使用模拟方式与PSAM卡进行通信,对时序的要求非常严格,在自己的代码中一定要做好相关延时尤其是每个etu的时间 要测量准确。 2. 使用串口方式与PSAM卡直连,是硬件级的通信,写起来相对容易一些。 &…

CentOS7.0 安装 tomcat-9.0

2019独角兽企业重金招聘Python工程师标准>>> 1、解压 # tar -zxvf apache-tomcat-9.0.0.M4.tar.gz -C /opt/usr/local 改个名字好以后操作: # mv apache-tomcat-9.0.0.M4.tar.gz tomcat 2、启动&停止 # /opt/usr/local/tomcat/bin/start…

SpringMVC转发和重定向

页面间的跳转分为转发和重定向 但是转发和重定向在springMVC里又分为转发到页面和重定向到页面,转发到处理器方法和重定向到处理器方法 下边是具体实现功能的代码: 转发到页面和重定向到页面 //转发到页面RequestMapping("/five")public Strin…

一幅长文细学华为MRS大数据开发(四)——HBase

4 HBase 摘要:HBase是一种非关系型数据库,它是基于谷歌BigTable的开源实现,和BigTable一样,支持大规模海量数据的存储,对于分布式并发数据处理的效率极高,易于扩展且支持动态伸缩,适用于廉价设备…

AOP技术基础

1、引言2、AOP技术基础 3、Java平台AOP技术研究4、.Net平台AOP技术研究2.1 AOP技术起源 AOP技术的诞生并不算晚,早在1990年开始,来自Xerox Palo Alto Research Lab(即PARC)的研究人员就对面向对象思想的局限性进行了分析。他们研…

Could not find a package,configuration file provided by G2O ,G2OConfig.cmake,g2o-config.cmake

因为项目需要使用到g2o,所以自己从git上面clone下来, git clone https://github.com/RainerKuemmerle/g2o.git 然后: cd g2o mkdir build cd build cmake .. make -j4 编译完成,并在CMakeLists.txt使用g2o: set(G2O_DI…

TCP 协议的三次握手、四次分手

详细描述了 TCP 协议的连接和关闭的整个过程。解释了为什么 TCP 协议是面向连接的、可靠的数据传输协议。 TCP 在互联网上之间的通信交流,一般是基于 TCP (Transmission Control Protocol,传输控制协议) 或者 UDP (User Datagram Protocol,用…

prefix.pch文件的一些简单使用

该文件可以引入一些全局通用的文件,这样就不用每次在文件中导入,也可以定义全局通用的变量或常量,如 //定义NSString常量 #define ServiceName "cn.zmfc" //定义颜色 #define BackgroudColor [UIColor colorWithRed:232/2…

[Bzoj4182]Shopping(点分治)(树上背包)(单调队列优化多重背包)

4182: Shopping Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 374 Solved: 130[Submit][Status][Discuss]Description 马上就是小苗的生日了,为了给小苗准备礼物,小葱兴冲冲地来到了商店街。商店街有n个商店,并且它们之间的道路构成了一…

您不能在64-位可执行文件上设置DEP属性?

我是为dllhost.exe设置DEP时遇到了同样的情况。你需要选择64位系统对应的程序。64位系统:C:\Windows\SysWOW64\dllhost.exe32位系统:C:\Windows\System32\dllhost.exe

应聘者提问环节

http://blog.csdn.net/jinhuiyu/article/details/4487058转载于:https://www.cnblogs.com/wuchanming/p/4333791.html

Tiny框架2.0版火热推出

方法论 方法论决定了可以达到的高度 方法论,就是人们认识世界、改造世界的根本方法。 它是人们用什么样的方式、方法来观察事物和处理问题。概括地说,世界观主要解决世界“是什么”的问题,方法论主要解决“怎么办”的问题。 方法论是一种以解…

Java--Socket通信

下面内容是Java开发内容的高级知识点,需要对Java中的面向对象、IO、多线程、以及网络相关知识有一定的基础。(知识永远都有深度,本章节长期更新内容) 1、网络基础知识 网络通信的条件:1、两个通信的端都要有各自的IP地址作为唯一标识&#xf…

一幅长文细学华为MRS大数据开发(五)——MapReduce和Yarn

5 MapReduce和Yarn 摘要:本文中主要讲述大数据领域中最著名的批处理和离线处理计算框架——MapReduce,包括MapReduce的原理、流程、使用场景,以及Hadoop集群中负责统一的资源管理和调度的组件——Yarn。 作者:来自ArimaMisaki创作…

数据:ContentResolver类

ContentResolver是通过URI来查询ContentProvider中提供的数据。除了URI以 外,还必须知道需要获取的数据段的名称,以及此数据段的数据类型。 如果你需要获取一个特定的记录,你就必须知道当前记录的ID。 简要介绍ContentResolver的主要接口&…

[MySQL 5.6] Performance Schema 之 PS配置项(1)

尽管Performance Schema(以下简称PS)在5.5中已经出现,但一直没有使用过,并且相比5.6,5.5的PS表要少很多。 以下从一个初学者的角度,阅读PS的官方文档,做一些简单的笔记官方文档见:ht…

Tensorflow从入门到精通之——Tensorflow基本操作

前边的章节介绍了什么是Tensorflow,本节将带大家真正走进Tensorflow的世界,学习Tensorflow一些基本的操作及使用方法。同时也欢迎大家关注我们的网站和系列教程:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知…

一幅长文细学Vue(七)——路由

7 路由 摘要:在本文中我们会谈及路由的知识点,了解前端路由工作的过程以及如何在Vue3中配置路由,知道怎么使用嵌套路由和实现动态路由匹配,以及使用编程式导航和导航守卫。 声明:为了文章的清爽性,在文章内…

[编程题] 按照左右半区的方式重新组合单链表

[编程题] 按照左右半区的方式重新组合单链表 给定一个单链表的头部节点head,链表长度为N。 如果N为偶数,那么前N/2个节点算作左半区,后N/2个节点算作右半区; 如果N为奇数,那么前N/2个节点算作左半区,后N/21…

iOS开发之单例模式

1、概述 单例模式是一种常用的软件设计模式,通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。 如果希望系统中某个类的对象只能存在一个,单例模式是最好的解决方案&#xff0c…