设计模式的思维套路

163 阅读6分钟

7种设计原则

单一原则:一个类只负责一个功能领域中相应的职责

开闭原则:软件实体应对扩展开放,而对修改关闭

里氏替换原则:所有引用基类对象的地方能够透明地使用其子类的对象

例:我喜欢动物,那我一定喜欢狗,因为狗是动物的子类;但是我喜欢狗,不能据此断定我喜欢动物,因为我不喜欢老鼠。

依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象

接口隔离原则:使用多个专门的接口,而不使用单一的总接口

合成复用原则:尽量使用对象组合,而不是继承来达到复用的目的

迪米特法则:一个软件实体应当尽可能少地与其他实体发生相互作用(不要和陌生人说话)

思考问题的套路,决定了以后解决问题的思考路径,惟有学习好的思考路径或是思考角度,才能让自己之后解决问题更加高效。

思路模板:

它解决了什么问题?

它解决问题的思路是什么?

这个问题的产生是因什么引起?

什么场景可以使用它?

它的结构是什么样的?(非软件项目可以该模板)

他的关键代码是什么?简单的架构代码?开发过程中应用的代码?

生活中是否有这样使用的案例?

它的优缺点是什么?

设计模式由三大分类构成分别为

1.创建型模式

创建型模式关注的是对象的创建过程, 创建型模式将对象的创建和使用分离,在使用对象时无须关注对象创建的细节,从而除低系统的耦合度,让设计方案更易于修改和扩展。每个创建模式都通过采用不同的解决方案来回答3个问题,创建什么?由谁创建?何时创建?

2.结构型模式

关注如何将现有类或对象组织在一起形成更加强大的结构。不同的结构型模式从不同的角度来组合类或对象,在尽可能满足各种面向对象设计原则的同时,为类或对象的组合提供一系列巧妙的解决方案

3.行为型模式

行为型模式关注系统中对象之间的交互,研究系统在运行时对象之间的相互通信与协作,进一步明确职责划分,行为型模式不仅仅关注类和对象本身,还重点关注他们之间的相互作用和职责划分

学习设计模式的思维模板

它解决了什么问题

解决问题的思路是什么:

这个问题的产生是因为什么引起的:

什么时候使用它:

他的关键代码是什么?简单的架构代码?开发过程中应用的代码?

备注以下为摘抄

欧氏的贡献在于他从公理和公设出发,用演绎法把几何学的知识贯穿起来,揭示了一个知识系统的整体结构。他破天荒地开辟另一条大路,即建立了一个演绎法的思想体系。

我们的思维模板也是基于几条原则来建立设计模式的思维体系。

牛顿万有引力定律

牛顿力学的核心是万有引力(law of universal gravitation),而牛顿的所有力学理论,都是建立在引力与惯性,这两条底层逻辑之上的。

牛顿大概22岁时,全部思想就形成了,牛顿认为运动的物体将一直保持匀速直线运动状态,除非有外力让它静止下来,因为,物体有惯性。

你要知道,惯性定律是与日常直觉相反的,我们今天可能听熟了这个词,但在最初,这个说法的提出是极其震撼的。整个17世纪,最难发现的就是这个概念。

惯性定律提出以后,牛顿很快就更进一步提出了:万有引力。

他认为物体之所以运动,不是因为内在有这样运动的倾向,而是因为有一个外力推动了它。比如苹果之所以要落下来,是因为地球对它有一个引力。

此后,根据这位伟大科学家的理论,把17世纪之前无法解释的所有问题,全部解决掉了,然后西方才有了科学革命,才有了工业革命

达尔文进化论

达尔文进化论的核心是自然选择(natural selection),得出这个结论的线索是建立在遗传变异与生存竞争,这两条底层逻辑之上的。

在达尔文提出进化论之前,人们普遍认为所有的物种是由上帝创造出来的。

5年远航期间,达尔文把搜集的标本拿回英国考察,的确发现有新的物种产生了。

于是,他发现了第一个机制 ——遗传变异。

1837-1838年,是达尔文一生当中在知识上最活跃、最亢奋的时期。他贪婪阅读各种书籍,地

质学、生物学,以及大量哲学,并且急剧地转向了不可知论——所有重要的知识人类还未了解,过去所有的洞见都可以被打破。

接着,1838年9月28日,达尔文阅读马尔萨斯的《人口论》,里面提到了人口的繁殖跟竞争的

关系,这让他获得了顿悟,第二个基石逻辑由此而出 ——生存竞争。

资源稀缺会导致竞争,每一代繁殖都会有遗传和变异,适应的基因被选择下来,不适应的被淘

汰下去,久而久之这些变异的累积,就会产生新物种。

现代政治学中的基石:人生而平等

人生而平等,这是美国建国以后,整个政治的根基,而解放黑奴,是林肯最伟大的贡献之一。

在这个理念之前,几乎全世界所有的政治理念都是“人生而不平等”,贵族、贫民、奴隶,阶层分明。现代社会,断然没有人敢否定这句话,但在当时看来,议会里全是白人,大部分是反对黑奴独立的。在那样的政治氛围之内,签署这个法律并且让议会通过,非常艰难。

这个“决策”是怎样被通过的?

奥斯卡影片《林肯》里,有这样一个场景:在签发解放黑奴的法律之前,林肯一人独处书房,手里拿着《欧氏几何》,死死盯着第四公设:所有直角都全等。

因此,林肯建立了人生而平等的基本原则,底层逻辑是来自几何学。

类似地,生叔的第二定律,其底层逻辑基石分别来自:

(1)量子物理学(上帝掷的骰子)

(2)生物学(优先链接和物竞天择)

(3)心理学(自我增强的循环)

这是三条完全不言自明的逻辑基石,因此马太效应这条“生叔第二定律”,自然就是事物的本体、本质、本性,是事物背后的支配理念,而不是现象层面流变的物质,它不能被违反、不能被忽视