【译】再见,面向对象编程(二)

栏目: 后端 · 前端 · 发布时间: 5年前

内容简介:Charles Scalfani原文:元旦过了,以下是第二部分的翻译。

Charles Scalfani

原文: https://medium.com/@cscalfani...

元旦过了,以下是第二部分的翻译。

【译】再见,面向对象编程(二)

Museum by Mark Chang https://www.artstation.com/ar...

封装,第二个坍塌的支柱

乍一看,封装应该是OO编程中的第二大收益。

对象的变量状态不能从外部访问,他们被封装在对象中。

封装对你的变量来说很安全。

封装太厉害了!

直到。。。

引用的问题

基于效率上的考量,对象不是基于他们的值而是基于他们的引用传递给方法。

这个意思是对象没有传给方法,实际传的是 引用 或对象的指针。

如果一个对象是按照引用传给对象的构造函数,构造函数可以把对象引用放在被封装所保护的私有变量中。

但是传递的对象并不安全!

为什么?因为代码的其他地方有指向对象的指针,那段代码可以调用构造函数。他必须要有对对象的引用不然他不可以将其传给构造函数。

引用的解法

构造函数需要将传递过来的对象克隆。而且不是浅克隆而是一个深克隆,每一个传递给对象的参数里包含的对象与每一个在这个对象中包含的对象,一个接一个。

都是为了效率。

不是所有的对象都可以被克隆。一些是与操作系统资源所关联的对象,对其进行克隆最好的结局是没什么用,而最坏的结局是做不了。

而每一个主流OO语言都有这个问题。

再见,封装。

多态,第三个坍塌的支柱

Polymorphism was the redheaded stepchild of the Object Oriented Trinity.

It’s sort of the Larry Fine of the group.

Everywhere they went he was there, but he was just a supporting character.

(翻译注,以上三句水平有限,应该有美语语境的典故,不好翻译,故放原文)

并不是说多态不好,只是你不需要在面向对象语言里做这个。

接口可以给你这个能力。而不需要OO的特性。

而使用接口,不管你加入多少行为都没有任何限制。

所以不用太麻烦,我们对基于OO的多态说再见,拥抱基于接口的多态。

被打破的承诺

当然,OO在早期承诺了很多。而这些承诺对于在教室中的,读博客和学习线上课程的天真 程序员 有效。

我花了许多年才认识到OO骗了我。

我被卖了。

再见,面向对象编程。

怎么办?

你好,函数式编程。能在这几年能遇到你真不错。

只有再一,没有再二。

如果你想加入一个web开发者互相学习和帮助的使用Elm函数式编程的社区,你可以访问我的Facebook组, Learn Elm Programming。

https://www.facebook.com/grou...

微信公众号「麦芽面包」,id「darkjune_think」

开发者/科幻爱好者/硬核主机玩家/业余翻译家/书虫

交流Email: zhukunrong@yeah.net


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

jQuery

jQuery

Earle Castledine、Craig Sharkie / SitePoint / 2010-02-28 / USD 39.95

jQuery: Novice to Ninja is a compilation of best-practice jQuery solutions to meet the most challenging JavaScript problems. In this question-and-answer book on jQuery, you'll find a cookbook of ready......一起来看看 《jQuery》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具