这篇文章主要讲解了JavaScript面向对象的七大基本原则的用法,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。
本文实例讲述了JavaScript面向对象之七大基本原则。分享给大家供大家参考,具体如下:
面向对象编程有自己的特性与原则,如果对于面向对象有一些了解的话,面向对象三大特征,封装,继承,多态,如果对面向对这三个概念不太了解,请参考面向对象之三个基本特征(JavaScript)
单一职责
如果我们在编写程序的时候,一类或者一个方法里面包含了太多方法,对于代码的可读性来说,无非是一场灾难,对于我们来说,所以为了解决这个问题,出现了单一职责。
什么是单一职责引用>单一职责:又称单一功能原则,面向对象五个基本原则(固体)之一。它规定一个类应该只有一个发生变化的原因。(节选自百度百科)
按照上面说的,就是对一个类而言,应该仅有一个引起它变化的原因。换句话说,一个类的功能要单一,只做与它相关的事情。在类的设计过程中要按职责进行设计,彼此保持正交、互不干涉。
单一职责的好处引用><李>类的复杂性降低,实现什么职责都有清晰明确的定义李> <李>可读性提高,复杂性降低,那当然可读性提高了李> <李>可维护性提高,可读性提高,那当然更容易维护了李> <>李变更引起的风险降低,变更是必不可少的,如果接口的单一职责做得好,一个接口修改只对相应的实现类有影响,对其他的接口无影响,这对系统的扩展性,维护性都有非常大的帮助。李>
实例引用>类ShoppinCar { 构造函数(){ 这一点。商品=[]; } addGoods(好){ 这一点。商品=[好]; } getGoodsList () { 返回this.goods; } } 类结算{ 构造函数(){ 这一点。结果=0; } calculatePrice(列表,键){ 让allPrice=0; list.forEach ((el)=比;{ allPrice +=el(例子); }) 这一点。结果=allPrice; } getAllPrice () { 返回this.result; } }用上面的代码来说<代码> ShoppinCar> 代码类存在两个方法<代码> addGoods 代码>和<代码> getGoodsList> 代码,分别是添加商品和获取商品列表。代码> <代码>解决类中存在两个方法<代码> calculatePrice 代码>和<代码> getAllPrice> 代码分别做的事情是计算价钱与获取总价钱。<代码> ShoppinCar 代码>与<代码>结算> 代码都是在做自己的事情。添加商品与计算价格,虽然在业务上是相互依赖的,但是在代码中分别用两个类,然他们自己做自己的事情。其中任何一个类更改不会对另一个类进行更改。
开闭原则
在一个类中暴露出去的方法,若这个方法变更了,则会产生很大的后果,可能导致其他依赖于这个方法且有不需要变更的业务造成大面积瘫痪。为了解决这个问题,可以单独再写一个方法,若这个方法与这个类中的其他方法相互依赖。
解决办法:
<李>把其中依赖的代码复制一份到新的类中。李> <李>在新类中引用旧类中的方法。李>
两种方法都不是最好的解决方案。
第一种方法会导致代码大量的重复,第二种方法会导致类与类之间互相依赖。
什么是开闭原则引用>开闭原则:“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。(节选自百度百科)
开闭原则对扩展开放,对修改关闭,并不意味着不做任何修改,底层模块的变更,必然要有高层模块进行耦合,否则就是一个孤立无意义的代码片段。开闭原则是一个最基本的原则,另外六个原则都是开闭原则的具体形态,是指导设计的工具和方法,而开闭原则才是精神领袖。
开闭原则好处引用><李>开闭原则有利于进行单元测试李> <>李开闭原则可以提高复用性李> <>李开闭原则可以提高可维护性李> <>李面向对象开发的要求李>
实例引用>类{拖 (){//? } 移动(){//?/对拖拽没有做任何限制可以随意拖拽 } (){//? } } 类LimitDrag延伸阻力{ 移动(){//?/重写该方法对拖拽进行限制处理 } }在<代码> LimitDrag> 代码中重写了<代码> 代码>移动方法,若修改了可以满足两种需求,一种是限制型拖拽,一种是不限制型拖拽,任何一个更改了另外一个还是可以正常运行。
JavaScript面向对象的七大基本原则的用法