我有以下课程:
class cManipulator : public cEditor
{
public:
cManipulator( ICanvas *canvas, cCompositeRoot* obj );
~cManipulator();
private:
....
class VisitorSetProp* m_SetVisitor;
class VisitorGetProp* m_GetVisitor;
}
cManipulator::cManipulator( ICanvas* canvas, cCompositeRoot* obj ) :
...
{
...
m_SetVisitor = new VisitorSetProp (this);
m_GetVisitor = new VisitorGetProp (this);
}
cManipulator::~cManipulator()
{
delete m_SetVisitor;
delete m_GetVisitor;
}
class VisitorSetProp : public Visitor
{
public:
......
}
class VisitorGetProp : public Visitor
{
public:
....
}
UML类图上的变体是什么?
或
答案 0 :(得分:1)
第一个是正确的!
Visitor
是由VisitorSetprop
& VisitorGetprop
。
VisitorSetprop
& VisitorGetprop
也与cManipulator
合并有关。
所有这些关系都在第一个图中正确显示。
答案 1 :(得分:1)
在这种情况下,我认为第一个是合适的符号有两个原因:
见这里:http://www.ibm.com/developerworks/rational/library/content/RationalEdge/sep04/bell/
答案 2 :(得分:1)
第一个是正确的(名为撰写),因为cManipulator
对m_SetVisitor
和m_GetVisitor
负有生命责任
第二个名为聚合。当多个对象指向访问者时使用它,并且它们在一生中不具有可用性。
此致
答案 3 :(得分:0)
正确的是您的源代码。没有这样的Righ或Wrong模型......所有型号都错了。 但其中一些对于手头的问题很有用。
The model is Wrong if it does not help you to solve or make easy any of your problems.
P.S。 :实际上源代码也不是正确的型号: - )