NO TRY , NO HIGH
基于《JavaScript设计模式》前八章及《JavaScript设计模式与开发实践》引言部分读书笔记。
一种可复用的解决方案,可用于解决软件设计中遇到的常见问题。
在面向对象软件设计过程中针对特定问题的简介而优雅的解决方案。
通俗的说,设计模式是在某种场合下对某个问题的一种解决方案,或者说是给面向对象软件开发中的一些好的设计去个好名字。这些好的”设计”并不是GoF发明的,而是早已存在于软件开发中。GoF将这些”好的设计”从浩瀚的面向对象世界中挑选出来,并且给予它们一个好听又好记的名字。
一个好的设计方案有了名字之后,才能被更好的传播,人们才有更多地机会去分享和学习。
某一种设计模式都重点关注一个特定的面向对象设计问题或设计要点,描述合适使用,在另一些约束条件下啥都还能使用,以及使用的效果和利弊。
如果我们认为一种模式代表一种最佳实践,那么一种反模式就代表我们已经学到的教训。
描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生。
设计模式被一些人认为只是夸夸其谈的东西,使用设计模式可能会增加复杂性,或带来额外的代码。
从某种角度看,设计模式确实可能带来代码量的增加,或许也会把系统逻辑搞得更加复杂。但软件开发的成本并非全部都在开发阶段,设计模式的作用就是让人们写出可重用和可维护的程序。
所有设计模式都遵循一条原则,即“找出程序中变化的地方,并将变化封装起来”。当我们封装了可变部分,那么剩下的就是不可变部分,这些不变和稳定的部分是很容易复用的。
比如假设有一个空房间,我们需要日复一日的往里面扔东西。最简单的方法当然是直接扔了,但是时间久了会发现想要从这个房间找到想要的东西会变得越来越难。所以在房间里放一些箱子来分类更好的选择,虽然箱子会增加我们的成本,放的时候也不再是随便乱扔了,但是找起东西来就方便多了
使用这些箱子的过程,或许就对应于使用设计模式的过程。