JS设计模式之序

最近看了3本关于设计模式的好书,Head First Design Patterns,Learning Javascript Design Patterns,大话设计模式,也顺便捡一捡多年不用的英语。

我们都知道一个古老的问题:面向对象的好处有哪些?可复用、可扩展、易维护、灵活。我用一门面向对象语言(比如c#)来写程序,我的代码当然不会自动获得上述优点,而取决于我怎么去写。那怎么写出可复用、可扩展、易维护又灵活的代码呢,大牛们早已总结了以下设计原则:

  • seperate what changes from what stays the same
  • program to an interface, not an implementation
  • favor composition over inheritance
  • strive for loosely coupled designs between objects that interact
  • classes should be open for extension, but close to modification
  • talk only to your immediate friends
  • a class should have only one reason to change

如果只用一句话来概括设计原则,那么一定是第一条,封装变化。毕竟变化是“enemy”,它不可避免,才驱使我们燃烧着脑力堆积起健壮的代码来对坑它。

为此,大牛们又给了我们“武器”,即各种各样的设计模式,用来解决某一类问题或问题的某个方面。设计模式不是具体的解决方案,它更像是一个获得大家认可的模板,我们利用这个模板来解决问题。面对不同的情况,选择对的设计模式,并恰当的使用,决定了好坏,也是我目前的目标:)

值得一提的是,这些经典的介绍设计模式的书籍里充斥着类、接口等等,而javascript里并没有类和接口,所以这个系列主要想记录下来自己学习设计模式和应用到javascript上的一些疑惑、心得和体会。

原文地址:https://www.cnblogs.com/coiorz/p/4804141.html