浏览 1805 次
锁定老帖子 主题:“协作”
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-04-27
互不联系的对象,就算是它自身很复杂,对于我们,它不是很有用。OOP中亦是如此。 面对复杂的对象的第一步是抽象和分类,第二步就是分析与它相联系的对象与它之间的关系和它自身内部复杂对象之间的关系。为了友好期间,我称这些关系统称为协作关系,即一些对象协作另一些对象或是互相协作来共同完成一项复杂的工作。 还记得那个自动订餐的快餐店吗?为了完成这个自动订餐,快餐店里的几乎所有的人员都行动起来了,他们各施其职,以最有效率的方法,实现为订餐的客人送去他 们订的餐,当然他们如果觉得人手不够,可能会让快递公司去完成送餐的工作。这里你就可以很形象的看到什么叫协作。 那我们怎么样才能把我们抽象和分类之后一堆对象组织起来,让它们协作工作,像现实中的快餐店的人员一样? 首先说明,组织对象的技术我并不在行,我只是提供一些意见而已。 组织起来有软性的,也有硬性的,如公司管理一样,这两种方式各有各的好处。我们就以这两种方式展开来讨论讨论。 先说硬性的吧。 如果那个快餐店交给快递公司去完在送餐的工作,而快餐公司总是记不住那些客人的地址,我想如果你是快餐店的老板,你肯定会换快递公司。下次,你为了不让快 递公司犯同样的错误,你会把所有订餐的客人的地址和他们的餐搞一个单子交于快递公司。这下快递公司就能正确的送递。这个单子是个硬性的,快递公司这时虽然 快餐店与他是协作关系,但他必须服从。 我们为了让很多的对象协作完成一项工作,就要实行责任制。就是谁来完成什么工作,谁就应该对这项工作负责。我们之前会将订制好的责任交与负责人,如果他能完成好,则继续用他,如果不行,我们就会换人。而这些责任书是硬性规定,我们叫这些为合同,或叫契约。 制定合同的双方都应该遵守这个合同,这样工作才会有条不紊的按原计划进行。 在我们组织一堆对象去完成工作之前,应该把这些合同制定好,让它们按合同办事。 接下来我们说一下软性的。 软性的大家都应该有所理解,就是我们在完成好合同交于我们的责任后,其它的我们自主。合同的双方不会干预合同之外的事,包括你以什么方式完成合同的。 现在你是不是觉得合同是组织起来对象的灵丹妙药,其实你只是完成了第一步,用线把对象串起来而已。而它们工作起来的效率如何,是不是有人偷懒,你可能无从考量。你设计的对象协作方式可能没有别人的工作效率高,人员的利用率高?那么怎么完成这一步? 完成这一步只能说是属于领导艺术上的范畴,也是组织学上的范畴。 我们抽象和分类之后的这一堆对象是我们可以控制的资源,有效的利用资源是一种艺术,需要经过无数次的实践之后,你可能会总结出一些共性的道理出来。这种道 理与其它领域,如建筑学有很多相通的地方。所以在OOP中,我们会借签其它领域相通的总结出来的有效利用资源的方法。 这在项伟大的实践中,最为有名的是四人组,他们总结了一些共性的东西,共二十三种情况下最为有效的组织对象方法,它们给这些方法起了个有点怪的名字:模式。 下一节我们简单说一下这个“模式”。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |