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

原创 2006年06月05日 16:15:00

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

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

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

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

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


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


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

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

面向对象的6大原则

要把软件做得非常灵活又要便于维护是一个很困难的事情。灵活的软件他的结构就复杂,维护起来就困难。有得必有失,关键就在于如何处理这两者,使得大于失。软件的设计开发应遵循以下六大原则: 1. OCP ...
  • younghaiqing
  • younghaiqing
  • 2017年01月11日 17:37
  • 669

单一职责原则详解--七大面向对象设计原则(1)

单一职责原则来源:       定义:单一职责就是一个类负责一项职责.就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。       所谓职责,我们可以理解为功能,就是设计的这个类功能...
  • fanyun_01
  • fanyun_01
  • 2016年07月14日 08:48
  • 1150

JAVA初学:关于“面对对象”的一些理解与感悟

如何理解JAVA面对对象的思想
  • Deadline_1
  • Deadline_1
  • 2016年05月18日 16:01
  • 933

结构型模式02-装饰者模式(动态为一个对象添加职责,就增加功能而言,装饰模式比生成子类更加灵活)

装饰者模式,名字很贴切,装饰一词,本来就是在原有的基础上增添点东西。而在软件领域,增加功能是一件多么常见的事情。策划最常说的就是,“你看下,这里能不能加个.....”,QA的绩效考核上,还要包含建议数...
  • difffate
  • difffate
  • 2017年04月27日 01:33
  • 269

六大设计原则之单一职责原则

单一职责原则单一职责原则(Single Responsibility Principle)–SRP:There should never be more than one reason for a c...
  • hfreeman2008
  • hfreeman2008
  • 2016年08月17日 20:20
  • 774

面向对象和面向组件的区别

今天被问到你们项目是用面向对象做的还是面向组件做的   当时我就傻了  面向组件是什么?  于是查了些资料  觉得面向组件在效率上要比面向对象高不少  确实值得学习 现把面向对象和面向组件的区别贴出...
  • qq_20026817
  • qq_20026817
  • 2015年08月13日 12:00
  • 703

面对对象和面对过程的理解

1、面向过程 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了,程序从main()函数起运行,调用一个个其它函数。  也就是说,面向过程是由函数堆积...
  • qq_30716173
  • qq_30716173
  • 2015年10月17日 10:50
  • 870

JAVA面对对象

141.     局部变量、成员变量、静态变量分别怎么声明? 
 局部变量和成员变量的作用域有局限性,一般都要看花括号来进行判断。而全局变量一般作用于整个类。静态变量的声明是 static 142...
  • jolivan
  • jolivan
  • 2017年05月01日 15:25
  • 397

面向对象的五大基本原则

面向对象的5大基本设计原则: 单一职责原则(Single-Resposibility Principle)     其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。单一职责原则...
  • qq_36607646
  • qq_36607646
  • 2016年12月03日 19:19
  • 1214

面对对象的语言的三大特征

1:封装          封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。 它有两个含义:即把对象的全部属性和全部服务结合在一起, 形成一个不可分割的独立单位; 以及尽可能隐藏对象...
  • tfygg
  • tfygg
  • 2014年02月21日 15:45
  • 1686
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:论面向对象方法中的对象、职责、协作
举报原因:
原因补充:

(最多只允许输入30个字)