JavaScript设计原则

摘要:
找出发生变化的地方。消除对象的多态性。条件分支。放置挂钩。使用回调函数。优点:提高程序的稳定性。轻松更换位置。它们分离后,更容易维护它们。缺点:代码完全关闭。这几乎是不可能的。最少知识原则。最少知识原则说,软件实体应该尽可能少地与其他实体交互。一种常见的方法是引入第三方对象来承担这些对象之间的通信。Leech替换原则LiskovSubstitutionPrinciple所有引用基类的地方必须能够透明地使用其子类的对象接口隔离原则InterfaceSeparationPrinciple1。客户端不应依赖它不需要的接口。

单一职责原则(SRP)

Single Responsibility Principle
单一职责原则的职责被定义为“引起变化的原因”。如果我们有两个动机去改写一个方法,那么这个方法就具有两个职责。每个职责都是变化的一个轴线,如果一个方法承担了过多的职责,那么在需求的变迁过程中,需要改写这个方法的可能性就越大。一个对象(方法)只做一件事情。
优点:降低了单个类或者对象的复杂度,按照职责把对象分解成更小的粒度,这有助于代码的复用,也有利于进行单元测试。当一个职责需要变更的时候,不会影响到其他的职责。
缺点:增加编码复杂度,同时增加对象之间联系的难度

开放-封闭原则(OCP)

Open Closed Principle
软件实体(类、模块、函数)等应该是可以扩展的,但是不可修改。
当需要改变一个程序的功能或者给这个程序增加新功能的时候,可以使用增加代码的方式,但是不允许改动程序的源代码。

  1. 找出变化的地方
  2. 用对象的多态性消除条件分支
  3. 放置挂钩
  4. 使用回调函数
    优点:程序的稳定性提升、容易变化的地方分离出来后更容易维护
    缺点:代码的完全封闭几乎不可能

最少知识原则(LKP)

Least Knowledge Principle
最少知识原则说的是一个软件实体应当尽可能少地与其他实体发生相互作用。如果两个对象之间不必彼此直接通信,那么这两个对象就不要发生直接的相互联系。常见的做法是引入一个第三者对象,来承担这些对象之间的通信作用。如果一些对象需要向另一些对象发起请求,可以通过第三者对象来转发这些请求。
优点:减少或消除对象之间的耦合程度,提高复用性
缺点:需要封装对象或者引入一个第三者对象来处理两者之间的联系,有时候第三者对象会复杂到难以维护。


里氏替换原则(LSP)

Liskov Substitution Principle
所有引用基类的地方必须能透明地使用其子类的对象

接口隔离原则(ISP)

Interface Segregation Principle
1、客户端不应该依赖它不需要的接口。
2、类间的依赖关系应该建立在最小的接口上。

依赖倒置原则(DIP)

Dependence Inversion Principle
1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。
2、抽象不应该依赖于细节,细节应该依赖于抽象。

免责声明:文章转载自《JavaScript设计原则》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇测试用例优化设计攻防世界-crypto-你猜猜(常用文件的文件头、Ziperello爆破压缩包密码)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

设计原则~

1. 单一职责原则(Single Responsibility Principle - SRP) 原文:There should never be more than one reason for a class to change. 译文:永远不应该有多于一个原因来改变某个类。 理解:对于一个类而言,应该仅有一个引起它变化的原因。说白了就是,不同的...

《设计模式之禅》六大设计原则2

接口隔离原则 接口隔离原则的定义 接口分为两种: ● 实例接口(Object Interface),在Java中声明一个类,然后用new关键字产生一个实 例,它是对一个类型的事物的描述,这是一种接口。Java中的类也是一种接口。 ● 类接口(Class Interface),Java中经常使用的interface关键字定义的接口。 那什么是隔离呢?它有两种...

优秀的API接口设计原则及方法(转)

一旦API发生变化,就可能对相关的调用者带来巨大的代价,用户需要排查所有调用的代码,需要调整所有与之相关的部分,这些工作对他们来说都是额外的。如果辛辛苦苦完成这些以后,还发现了相关的bug,那对用户的打击就更大。如果API经常发生变化,用户就会失去对提供方失去信心,从而也会影响目前的业务。 但是我们为什么还要修改API呢?为了API看起来更加漂亮?为了提供...