前端当中的面向对象理解

众所周知,编程从逻辑层面可分为面向过程和面向对象两种方式。面向过程是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。在遇到繁杂事务时就显得比较吃力。面向对象是将万事万物都作为一个独立的对象,拥有自己的属性事件行为。将事件拆分化,以多个小事件来解决遇到的大事件难题。在前端中同样是这样理念。

前端中的面向对象

面向对象是一种对现实世界理解和抽象的方法,相对于面向过程而言,面向对象方法把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。
面向对象的思想中有两个重要概念:类、对象。

类:具有相同特征和行为的事物的抽象

对象:类的实例

基于类的面向对象编程有3大特征:封装、继承、多态。

**封装:**把一个具有相同的特征和行为的客观事物封装成抽象的类。
类可以把自己的数据及方法让可信的类或则对象操作,类中的数据和方法可以私有化,让对象中的数据和方法提供了不同程度的保护,但是值得注意的是,在ES6中的类,没有提供类的私有化属性,参考上文,因此严格意义上说,ES中的面向对象思想与传统的基于类的面向对象有一定的差异。

**继承:**让某一个类型的对象获得另一个类型对象的属性和方法。
继承能够使用现有类的所有功能,并能无需重新编写原有类的情况下,对现在功能进行扩展。继承可分为实现继承(直接使用父类的属性及方法)和接口继承(使用属性和方法的名称,在子类中提供实现的能力)。不过在js中继承被简单化为:获取存在对象属性和方法的一种方式。在js中有很多种方式来实现继承下文中我们慢慢来实现关于js的继承。

**多态:**一个类实例中的相同方法和属性在不同场景有不同的表现形式。
多态能够使具有不同内部结构的对象共享相同的外部接口。在java中的面向对象中的多态是建立在继承和重载的基础之上的,它能够创建具有多种形式的变量,函数或对象。它主要用途在于不同类型的对象响应相同名称的方法,字段或属性调用的能力,每个对象根据适当的类型特定行为进行响应。但是前端中ES语言本身就具有一种多态的特性,具体下文介绍。

面向对象设计的五大原则:单一职责原则(SRP)、开放封闭原则(OCP)、替换原则(LSP)、依赖原则(DIP)、接口分离原则(ISP)。

**单一职责原则:**有且仅有一个原因引起类的变更即(功能单一),该原则降低了类的复杂性、提高代码可读性,可维护性、变更引起的风险降低。该原则能够很好的净化开发及维护环境。

**开放封闭原则:**功能的扩展性的开放和更改性的封闭。该原则能够带来功能复用性的遍历,提升开发效率,维护性也相对提高。

**替换原则:**子类应当可以替换父类并出现在父类能够出现的任何地方。该原则能够减少创建累的工作量、提高代码重用性、提高代码的扩展性、提高构建系统的开放性

**依赖原则:**具体依赖抽象、明确依赖关系。是一种特定的解耦方式实现,该原则能够提高代码扩展性,规范代码层次、降低代码耦合度。

**接口分离原则:**要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用。它与单一职责原则类似,为了提高类的内聚性、降低它们之间的耦合性,体现了封装的思想。但他们也存在不同之处。单一职责原则注重的是职责,主要是约束,它针对的是程序中的实现和细节类,而接口隔离原则注重的是对接口依赖的隔离,主要约束接口,主要针对抽象和程序整体框架的构建。在ES中并不支持接口,如果熟悉TS的知友,可以编译一下TS的interface,看看js中接口的相关实现,原理很简单,有兴趣的可以自行尝试。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值