《TypeScript图形渲染实战:2D架构设计与实现》 —2.3.9 面向接口与面向对象编程的个人感悟

举报
华章计算机 发表于 2019/12/12 11:39:20 2019/12/12
【摘要】 本节书摘来自华章计算机《TypeScript图形渲染实战:2D架构设计与实现》 一书中第2章,第2.3.9节,作者是步磊峰。

2.3.9  面向接口与面向对象编程的个人感悟

  到此时,来了解面向接口编程的特点是比较适合的时机。面向对象有3个要素:继承(Inheritance)、封装(Encapsulation)和多态(Polymorphism)。

  继承分为接口继承和实现继承(类继承),Doom3Tokenizer就是接口继承了IDoom3Tokenzier并实现了该接口的所有方法。对于TypeScript来说,可以通过关键字来区分实现继承(extends)还是接口继承(implements)。

  关于封装,笔者的理解有以下3个方面:

* 在接口中声明readonly属性,在实现类中使用get访问器来提供只读属性,这是对只读属性的封装。

* 将类内部使用的成员变量或成员方法,全部声明为private或者protected访问级别,决定是使用私有还是受保护级别的访问,依赖于你是否允许自己定义的类被继承,这是第二个封装的体现。

* 使用export导出接口,然而并没有导出实现类,让接口与实现相分离。这种情况是最高级别的隐藏,只能看到接口的方法签名,却无法了解具体的成员变量及实现细节。

  关于多态,可以用一个最简单的例子来理解。例如,在调用IDoom3Tokenzier接口的moveNext方法时,实际调用的是实现类Doom3Tokenizer的moveNext方法。换句话说,就是同一个操作,作用于不同的实列对象,有不同的解释,产生不同的执行结果。其实多态是整个面向对象编程的核心,在后面章节中将会有非常多的例子来演示和了解多态。

  而面向接口编程并不是一种独立的编程思想,而是附属于面向对象的编程思想,因此可以将面向接口编程看成是面向对象编程的一个子集。在实现接口时,使用的是接口继承方式,将接口与实现类相分离,从而达到更好的封装效果。对于调用方来说,不需要了解具体的实现细节,只要了解接口的含义就能让程序正常运行。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。