从面向对象编程转为面向接口编程

大家写过C++或者Java,或者其他语言,基本上都会接触到面向对象这个概念。

面向对象,本身是软件编程发展过程中的产物,当然相比于面向过程,是一种突破性的设计。但是,如果只是停留在面向对象编程,而不是继续向前看。那么,无疑是一种固步自封的陷阱。

更加先进的编程思想是什么呢?

就是面向接口编程。

 

这里,涉及到一个哲学问题。到底是以类型封装特征,还是以特征成就类型。

如果是前者,以类型封装特征,就属于面向对象编程。

如果是后者,以特征成就类型,就属于面向接口编程。

那么,毫无疑问,更先进更科学的做法,就是以特征成就类型,就是面向接口编程。也就是说面向接口编程才是代表了更先进生产力。

在我读研的时候发现,以特征成就类型这种做法,无论是物理学上面,还是数学上面,都是这样操作的。

举个例子,什么是4维空间?

大家都活在3维空间里面,你根本想象不到4维空间长什么样子,那么如果是以类型封装特征,你就完蛋了,你无法描绘特征,所以你无法定义对象。

数学上,怎么定义4维空间呢?以空间距离来定义。

在一个2维平面上,两点之间的距离是根号下x,y的平方和。

在一个3维空间上,两点之间的距离是根号下x,y,z的平方和。

所以,如果有一个空间,两个点之间的距离是根号下x, y,z,w的平方和,那么具备这个特征的空间,就是4维空间。

 

再举一个具体的例子,大家最常用的手机。

如果以面向对象的方式定义手机,如下:

大哥大 = 天线+数字按钮+话筒+麦克风

诺基亚 = 天线+数字按钮+字符按钮+话筒+麦克风

智能手机 = 屏幕+话筒+麦克风

 

但是,现在智能手表也可以打电话,智能手环也可以打电话,以后搞不好智能帽子,智能衣服都可以做到。

此时,面向对象的局限性就很明显了。

 

应该怎么做?

答案:面向接口编程。

 

从定义手机的角度来说,我们只需要定义通话功能的接口,谁实现了这个接口,谁就是手机。

智能手表实现了通话功能的接口,它就是手机。

智能手环,智能帽子,智能衣服,等等,只要实现了通话功能的接口,他就是手机。

这就是以特征成就类型!

 

希望,大家以后都采用这种编程思想去编程,也就突破了语言的限制,无论你用C,C++,Java,Python,你都可以实现这样的编程方式。

 

 

 

                                                                                                                                                      龙少

                                                                                                                                                     20180819

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值