现在的位置: 首页 > 综合 > 正文

论面向对象方法中的对象、职责、协作

2014年02月12日 ⁄ 综合 ⁄ 共 1071字 ⁄ 字号 评论关闭

面向对象方法的主要任务就是处理对象、职责、协作三者的各种关系,使构造出的系统能解决特定的问题。对象是完成任务的载体,系统的要完成的任务都是分配给一个或多个对象来承载,也就是对象的职责。当一个任务由多个对象来完成时,对象间必须要进行分工协作,以实现对象内的紧耦合和对象间的松耦合,保证系统的可扩展能力。

使用面向对象方法时,首要任务是找出系统中和要解决的问题相关的对象,为每个对象分配职责。当一个任务不能由一个对象来完成时,需要找出或添加其他对象来和这个对象协作来完成任务。此外,对系统中的公共任务,可以将这些任务分配给专门的公共对象来完成。其他的对象需要使用这些公共任务任务时,只要使用公共对象即可。

对象的发现并非单向过程,而是在职责分配和协作关系定义中需要循环往复。增加的对象和协作关系可能对已有的结构造成变更或需要优化,这个过程就是目前所说的重构。重构在整个开发过程中起到不断的改进和精炼的作用,使构造的系统能更符合业务需求。

对象内部的职责和对象间的协作关系的不同组合可用于解决各种不同的问题,对于一些特定的问题,可以采用固定的一些组合方式去解决,这种组合方式就是常说的设计模式。仔细研究一下GoF设计模式的内容,都是对象以及对象间以某种特定方式组合起来解决一个特定的问题。因此,如果要想发现或提出新的设计模式,就需要对对象以及对象间的协作进行研究和分析,针对特地的问题抽象出特定的关系。

对象职责的分配取决于对象在系统中的作用以及其他对象的作用,对于可以由一个对象完成的任务,就不要分配给多个对象;如果任务大到需要多个对象来完成,职责的分配要体现对象内部的紧耦合和对象间的松耦合。

对象间的协作关系包括引用和继承。引用通常都通过针对接口引用来实现对象间的松耦合,当接口不变时,对象内部实现的修改不会对引用它的对象造成任何影响,增强了系统的可扩展性。

继承相对引用是一种紧耦合关系,子对象和父对象都是属于同一种类型,子对象可以覆盖父对象中可访问的方法,当父类增加虚方法时,所有继承的子类必须增加对虚方法的实现。另外,由于java,c#不支持多继承,因此当一个任务需要不同类型的对象来完成时,通过单一继承比较难实现。

对象、职责、协作在面向对象方法中相互关联,共同构成面向对象方法的核心内容。 

对于对象、职责、协作分析可以通过不断的迭代,慢慢的达到一个相对合理的状态,而控制和理解系统的复杂度才是OO设计思想中的比较重要的部分,而这部分是通过优秀的抽象和信息隐藏来实现的。对于同一个问题,不同的人有不同的抽象,所以抽象的过程才是相当不容易掌握的过程。

抱歉!评论已关闭.