标签:cto ali extend strong -- ons line color pst
OOP 面向对象 七大原则 (二)
上一篇写到了前四个原则,这一篇继续~~
接口隔离:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。
又是一句大白话~就是说接口尽量的要细化,接口中的方法也要尽量的少
/**
* oop 接口隔离原则实现
* @author gongliying
* @date 2019-06-15
*/
achieve(){
class cosmetics {
constructor(name) {
this.name = name
}
color() {
console.log(this.name, "颜色")
}
efficacy() {
console.log(this.name, "滋润保湿")
}
size() {
console.log(this.name, "粗细")
}
}
class lipstick extends cosmetics {}
class eyeliner extends cosmetics {}
let kouhong = new lipstick("口红")
kouhong.color() // 口红 颜色
kouhong.efficacy() // 口红 滋润保湿
kouhong.size() // 口红 粗细
let yanying = new eyeliner("眼影")
yanying.color() //眼影 颜色
yanying.efficacy() //眼影 滋润保湿
yanying.size() // 眼影 粗细
},
我这样的确是都实现了,但是有没有感觉特别的emmmm冗余,而且逻辑上好像还是有点不对??? 因为口红并没有粗细啊 眼影我也还没有听过有滋润保湿的啊,这样的话有一些方法在继承的时候就显得有点多余了,官方的话就是--客户端不应该依赖他不需要的接口,
更改如下
/**
* oop 接口隔离原则实现
* @author gongliying
* @date 2019-06-15
*/
achieve(){
class cosmetics {
constructor(name) {
this.name = name
}
color() {
console.log(this.name, "颜色")
}
}
class lipstick extends cosmetics {
efficacy() {
console.log(this.name, "滋润保湿")
}
}
class eyeliner extends cosmetics {
size() {
console.log(this.name, "粗细")
}
}
let kouhong = new lipstick("口红")
kouhong.color() //口红 颜色
kouhong.efficacy() //口红 滋润保湿
let yanying = new eyeliner("眼影")
yanying.color() //眼影 颜色
yanying.size() //眼影 粗细
},
这样看起来是不是很好了,拥有了共同的方法,也有自己的方法,将接口细化,提高灵活性(官话),不依赖不需要的接口,这就是接口分离
标签:cto ali extend strong -- ons line color pst
原文地址:https://www.cnblogs.com/gongliying/p/11028674.html