我眼中的面向对象
近日又风闻诸如贫血不能很好的做面向对象,用服务就不算面向对象之类的言语,有些想法,下面我说下我对面向对象的想法,希望大家
指证。
我觉得面向对象应该是一种开发的指导思想,是用代码去模拟现实世界,用程序去表述业务,只要是以这种思想为指导开发的即可认为是
面向对象开发;而不是狭隘的一种写法,不能说怎么写是面向对象怎么写不是,将思想和写法等同比较,我认为这种想法是不合逻辑的,对
象只是对现实必要的抽象,如果非要说对象必须充血才算面向对象,那当业务抽象不需要属性或动作时,就不能算是面向对象了么?
一个典型就是服务,一个服务应当是对一类业务提供支持,那这个服务就充当了动作接口的实现,甚至于可以充当这类业务动作的主体,
比如说一个人拥有读书的动作:person.ReadBook,现在变成了实现了这个ReadBook的方法变成了服务,怎么就不面向对象了,甚至于极端情
况下,这个人没有任何其他职责,对于业务也不需要提供任何属性,那我就让服务充当人的实例:sevice.ReadBook,就从面向对象变成面向过
程了么,怎么想也说不过去吧。
至于贫血,这个更没什么好说的,存在即合理,只有垃圾的玩家没有垃圾的职业;在做项目的时候,组成人员参差不齐,进度越快越好,
在这种情况下,将属性和动作分开定义,可以让代码看起来更清晰,让不那么认真的程序员减少改串行之类内容耦合问题引起的BUG,但这并
不影响整个系统都是对象主体发出业务动作,通过交互来完成业务,系统依然是各个现实业务场景的模拟实现,这与做好做不好面相对象,
没有任何逻辑关系,
最后,当然更不能因为没达到某种效果,不具备某些优点就说不是面向对象,这没什么逻辑关系,唯物主义也有形而上,没用好不代表不
是。
转载请注明出处