UML中的继承和依赖建模

时间:2011-07-06 00:59:13

标签: uml

我正在尝试为Cairngorm微架构中的Flex RIA应用程序建模类关系。我有点困惑。

例如,我有两个类FrontController和Controller。 Controller扩展了FrontController。 另一方面,我有ICommand接口和SaveEmployeeCommand,它实现了ICommand。

FrontController有这两种方法......

  public function addCommand( commandName : String, commandRef : Class, useWeakReference : Boolean = true ) : void
  {
     if( commands[ commandName ] != null )
        throw new CairngormError( CairngormMessageCodes.COMMAND_ALREADY_REGISTERED, commandName );

     commands[ commandName ] = commandRef;
     CairngormEventDispatcher.getInstance().addEventListener( commandName, executeCommand, false, 0, useWeakReference );
  }

 /**
  * Executes the command
  */  
  protected function executeCommand( event : CairngormEvent ) : void
  {
     var commandToInitialise : Class = getCommand( event.type );
     //#### THIS IS DEPENDENCY ON ICommand INTERFACE ####
     var commandToExecute : ICommand = new commandToInitialise();

     commandToExecute.execute( event );
  }

Controller在构造函数中有init方法,就像这样...

public function init():void
{
    // SaveEmployeeEvent extends CairngormEvent
    // SaveEmployeeCommand implements ICommand interface
    //### THIS IS DEPENDENCY ON SaveEmployeeEvent AND SaveEmployeeCommand ###
    addCommand(SaveEmployeeEvent.SAVE, SaveEmployeeCommand);
}

所以,让我们考虑只依赖于命令。如果我们查看代码,我们将看到FrontController依赖于ICommand,并且Controller对SaveEmployeeCommand有某种依赖。我应该在UML类图上同时显示'Controllers-> Commands'依赖吗?(第一个依赖是FrontController-> ICommand,第二个是Controller-> SaveEmployeeCommand)
我的困惑是继承部分。如果我在FrontController和Controller之间放置继承关系,则意味着Controller也是FrontController,因此他也依赖于ICommand(依赖性是通过addCommand方法继承的)。我应该如何模拟这种情况?我举了一些可能的解决方案的例子......有什么建议吗?

Dependencies model

1 个答案:

答案 0 :(得分:0)

除了构造型之外,图中的关系看起来是正确的。我会将FrontController和ICommand之间的依赖关系更改为<<Instantiate>>