我想知道公共墙(位于相邻房间)和房间之间的关系。
据我所知,房间与其墙壁之间的关系是Composition not Aggregation
(我说得对吗?)
And according to the definition of
组合 the contained object can't be shared between two
containers, whereas in
聚合 it is possible
。
现在我很困惑,什么是表示公共墙壁和旁边房间之间关系的最佳建模方法?
如果您可以提供一些代码的建议,将不胜感激。
|--------|--------|
方法1:
(wall class ---- room class) /Composition
方法2:
wall class ----- room class /Aggregation
方法3:
我们有一个墙类和一个公共墙类,公共墙类继承自墙类
adjoining room class ---- (1) Common wall class /Aggregation
adjoining room class ---- (6) wall class / composition
方法 4: 我是开发人员而不是设计师 :) 所以这是我的想法:
class Room
{
private wall _firstwall ;
private wall _secondtwall;
private wall _thirdwall ;
private wall _commonwall ;
public Room( CommonWall commonwall)
{
_firstwall=new Wall();
_secondtwall=new Wall();
_thirdwall=new Wall();
_commonwall=commonwall;
}
}
Class CommonWall:Wall
{
//...
}
// 在某个地方:
static void main()
{
Wall _commonWall=new Wall();
Room room1=new Room(_commonWall);
Room room2=new Room(_commonWall);
Room [] adjacentRoom =new Room[2]{room1,room2};
}
编辑1: 我认为这是一个明确的问题,但只是为了更清楚:
问题的重点是找出对同时是两个其他对象的组件的对象的关系建模的最佳模式或方法。
关于我的例子:我的意思是“房间”吗?当然,我的意思是一个封闭的方形房间,有 4 面墙和一扇门。但在这种情况下,其中一堵墙是公共墙,由两个相邻的房间共用。