前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

模式

作者头像
只喝牛奶的杀手
发布2020-11-13 10:29:26
2710
发布2020-11-13 10:29:26
举报

公司内部成立了一个设计模式学习兴趣小组,我也怀着空杯心态报了名。新东西不一定让你成长,但是多琢磨、多思考、多探讨一定会让你成长。我们在学习设计模式的时候,但是这些模式有什么要素? 相信很多童鞋都不知道,我一开始也是不懂的。 晚上又打开《Java与模式》的书,又仔细琢磨了一下模式的要素,收获颇多。

模式的要素:

模式一应该包含以下这些这些元素:

1 名字(name):一个模式必须有一个有意义的,简短而准确的名字。一个好的名字可以使对模式的抽象讨论变得更容易。有时一个模式有多于一个的名字,这时候,这些名字就应该当做别名列出。

画外音:无名天地之始,有名万物之母,见名知义

2 问题(Problem):每一个模式必须有一个能够描述它用意的问题,以便能够说明此模式在给定的环境和力中要达到的目标和效果。经常发生的是,力彼此抵消,并且促进或者阻止模式达到它所希望达到的效果。

画外音:解决什么问题,达到什么目的

3 环境或初始环境(Context或Initial Context):模式的问题和模式的解答出现所需要的前提条件。环境说明模式的适用范围,环境也是模式应用之前的起始位形。

画外音:解决这个问题,需要什么条件

4 力(Forces):力给出与模式相关的力和约束,它们怎样彼此相互作用,以及他们对实现目标所起的反作用,比如一个模式为所得到的好处而付出的代价等。要比较好的描述一个模式,就必须完整的给出所有对模式有影响的力。

画外音:应用之后,效果和代价是什么

5 解答(Solution):解答相当于一个生产产品的指令、他可能包括相片、图表、文字,用于确定模式的结构、所涉及的角色以及角色之间的协作,解答要显示出问题是怎样得要解答的等。解答不仅要给出静态的结构,而且要给出动态的行为。其中静态的结构描述此模式的形式和组织,而动态的行为使得模式变成“活”的。模式的解答所描述的正好可以作为实现 模式的指南。

画外音:具体实现细节、步骤和元素

6 举例(Examples):可以使用一个或多个示例性的应用来说明特定的真实环境,以及模式是怎样应用到环境上、改变环境并且给出当模式结束时的末态环境的。例子可有助于读者理解模式的使用方法和适用性。每一个例子均可以附带有一个实现的样本,说明解答时怎样给出的。从熟知的系统里取出来的,有视觉效果的或以比喻方式表达的例子可以更易于使用者理解。

画外音:生动化和形象化

7 末态环境(Resulting Context):模式应用到系统之后的状态或位形。末态环境包括模式带来的好和坏的结果,以及新状态中含有的其他问题和可能涉及的其他有关系的模式。末态环境也就是模式的末态 条件和可能有的副作用。末态环境有时候也叫力的解决,因此它描述 的是什么力得到解决,什么力没得到解决,以及什么模式可以应用到特定系统上。很好的描述末态环境可以帮助比较末态环境与起始环境的区别和联系。每一个模式的每一次应用都是实现一个较大的任务的一小步。

画外音:实践之后的效果,吹牛逼不花钱

8 推理(Rationale):推理解释本模式的步骤、规则,以及此模式作为一个整体是如何以特定的方式解决模式的力的,解释本模式的力和约束是怎样协同合作的。它可以告诉设计师模式是怎样工作的,为什么可以工作,以及为什么此模式是好的。模式的解答可以描述模式外部的可见的机构和行为,而推理可以给出模式在系统表层以下的深层结构和关键机制的洞察力。

画外音:多复盘,多反思,多问为什么

9 其他的有关模式(Related Patterns):这一要素应当描述在现有的系统中这个模式与其他的模式的静态的和动态的关系。相关的模式经常带有相同的一些力。它们的初始环境和末态环境是经常相容的。这些模式可能是本模式的前任模式,也就是说,应用了这些模式可以给出本模式的初始环境;也有可能是本模式的继任模式,也就是说,本模式的应用给出这些模式的初始环境。这些模式还有可能是本模式的替代模式,也就是说,它们在不同的力和约束下,可以给出相同问题的不同解答;也有可能是本模式的相互依赖的模式,可以或必须和本模式同时使用。

画外音:多联想,多结构化

10 已知的应用(Known Users):在已经有的系统中模式出现和应用的例子,都可以作为已知的应用。这有助于证明此模式确实是对一个重复发生的问题的可行的解答。已知的应用经常可以成为教学用的教材。

画外音:多说成功案例

画外音是我自己的体会,觉得任何道理都是相同的。一般学习设计模式,要从模式的介绍、结构、长处和短处、什么情况下使用、怎样实现、应用举例、多联系等,当然每一个要素细化又是有很多知识,细化程度越高,说明段位越高,知行合一,循序渐进,不断细化,不断的探索本质才是我们应该追求的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 只喝牛奶的杀手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档