Bootstrap

谈谈对类和接口粒度的理解(根据面向对象设计原则)

谈到,我们从可以这一方面开始想,为什么要有类?

我们会不假思索地说是因为一种面向对象思想,那么面向对象思想是什么?

面向对象方法是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。(来自百度词条)

看起来已经很有道理了,但是好像还不够实际。再换一个角度,如果没有类,那么会发生什么?

一个程序就会变成一堆凌乱的数据和方法,编辑一个复杂的程序极其困难。这下应该就清晰明了了,没有类,方法和数据或者属性都是独自存在的个体,它们之间可以互相产生联系,从粒度的角度来看,方法和属性是粒度细的组件,它们是组成程序的最小单位,如果想用粒度小的单位构成较大的组织结构是十分辛苦的,用粒度相对较大的类来就更加直观,就像堆积木一样就可以完成一个程序。

一个个对象也就是一个个类,必然要产生联系,这就要求我们对其进行再组织,比如说对其公共的属性或者方法抽象到上层(接口或者父类)。

接口粒度

刚刚说了方法和属性是细粒度,细粒度组成粗粒度。接口是对象也就是类的再抽象的产物,其他类型实现接口,以保证它们支持某些操作。接口的粒度是根据具体类的需求定义的,代表所需方法的大小。如果一开始定义的接口粒度很小,但是后期需求发现上层调用需要用到一个粒度更加大的接口,这个时候需要分析这种场景是否很多,如果发现很多,就可以单独为其开一个新的接口,新的接口调用内部的粒度小的接口来组合成一个新的返回实体,这种相当于在原来的层次中间加了一层层次更加高的抽象,即小粒度组成大粒度。

面向对象的设计原则是支持可维护性复用而诞生的指导性原则。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;