javascript面向对象(三)

面向对象三大特征:封装、继承、多态
 
封装:将代码封装到函数中,不允许外部访问内部成员的属性和方法,对外提供唯一的访问接口。
 
继承:通过对象继承另一个对象的属性和方法,并进行扩展开发和维护。继承拥有单根性和传递性。
 
多态:一个接口方式,根据参数的不同实现不同的状态(前端没有多态,只有伪多态)。
 
 
封装的优势:
1.用户只需要关注实现即可,不需要关注内部原理。
2.降低了程序之间的依赖性,低耦合。
3.隐藏内部细节,不对外公开,一定程度保证了安全性。
 
es5中通过提供get/set对数据的取赋值进行了操作
 
封装的最好体现就是ajax和jquery
 
继承的优势:
1.节省代码
2.便于开发维护
3.方便扩展重写代码结构
单根性:一个类只能继承另一个类的属性和方法,继承不能实现多继承,避免代码的复杂性(一个儿子只能有一个爹).
传递性:类的继承是可以传递下去的,也就是说类A继承类B , 类C继承类A ,那么C同样会继承B的方法和属性。
 
五大基本原则
1.单一职能原则 SRP
这个非常好理解了,就是说一个类应该只有一个发生变化的原因。
 
以上面Student为例子,我们可以让他拥有学习和教授别人两种功能,但是最明显的问题,如果把教授别人的时间多了,那么自己学习的时间就少了,势必影响个人学习,所以尽量将学生和老师的职责分离开来。(例子而已,不要太纠结)这样的话就能更好的组织代码结构。
 
2.开放封闭原则
程序对外扩展是开放的,但是对内修改是封闭的
简单来说就是一个对象一旦被定义,那么已经定义好的部分是不允许修改的,但是可以扩展额外的代码结构
 
 
3.里氏替换原则OCP
主张使用抽象和多态将设计中的静态结构改为动态结构,维持设计的封闭性。
任何基类出现的地方,子类也可以出现。简单来说就是子类可以替代父类进行传参或操作
 
 
4.依赖倒置原则
高层模块定义接口,低层模块进行实现,转换了依赖关系。
1.高层模块不应该依赖于低层模块,两者应该依赖于抽象对象
2.抽象不应该依赖于细节,细节应该依赖于抽象
控制反转(IOC):将对象创建的控制权转移,通过配置文件或其他形式进行创建。
依赖注入(DI):IoC容器在运行期间,动态的将某种依赖关系注入到对象之中。
 
5.接口分离原则
客户类不应该呗强迫依赖那些不需要的接口
一个类依赖于另一个类应该建立在最小的接口上
 
 
 
 
 
posted @ 2017-03-29 15:26  做一名靠谱的大前辈  阅读(193)  评论(0编辑  收藏  举报