关于js设计原则的简要总结

(1)、单一职责原则

引起类的变更或者模块变更原因应该有且仅有一个(There must be one reason for a class to change)翻译过来的原因就是说,一个方法或者对象只做一件事情,其逻辑肯定比一个负责多项功能的方法简单的多,降低各方法之间的耦合性,避免改动其中一个就影响到其他模块的概率,降低变更引起的风险。Animal这个类就做了一件事情,就是喵喵叫,当传进来的动物时候猫的时候,没有任何问题,但是如果传进来的是狗,就有问题了,按照单一职责原则,这个时候需要重新写个类。

function Anmimal(){
    this.bark = function(animal){
        console.log(animal+'喵喵叫');
    }
}

var animal = new Anmimal();
animal.bark('猫');
animal.bark('狗');

function Anmimal1(){
    this.bark = function(animal){
        console.log(animal+'汪汪叫');
    }
}

var animal = new Anmimal1();
animal.bark('狗');

(2)迪米特法则

也叫最少知道原则,一个对象应该对其他对象有尽可能少的了解。一个对象内可以按照单一职责原则拆分很多功能模块,但是只对外暴露统一的借口或者调用方法,无须调用者知道被调用者内部其他方法功能模块等。

function  People(){
    run = () =>{
        console.log('run');
        talk();
    }

    talk = () => {
        console.log('talk');
    }

    return {
        runAndTalk: run,
    }
}

(3)依赖倒置原则

参考java里面的抽象类和借口,只负责定义基础方法但是不具体实现,具体实现交给子类去实现,如果你依赖的不是基础类,而是一个复杂的业务类,任何一项变更都将会导致一系列的变化,从而引发风险,维护成本也会增加。

(4)接口隔离原则

接口不能写的过于庞大和臃肿,尽可能的将拆分,将接口细化,个人理解类似一开始讲的单一职责原则,一个方法或者对象只负责一个功能,而不是一股脑的将所要功能写在一个方法里面,增加了耦合度。

(5)替换原则

子类要完全实现父类的方法,用父类地方可以完全用子类代替,子类可以扩展父类的功能,但是不能改变父类原有的功能,当功能扩展的时候,子类尽量不要去重写父类的方法,而是另写一个方法

(6)开闭原则

开闭原则其实讲的就是代码的可扩展性,当遇到需求变更时,我们只需要在原来的基础上调用方法扩展,而不是直接去修改原有代码逻辑,从而引发对原有逻辑的影响,例如Vue的mixin混入方法就是开闭原则的最好体现。

感谢您为我的屌丝逆袭之路添砖加瓦!!!