2011-07-06 88 views
1

我試圖在Flex RIA應用程序的Cairngorm微架構中建模類關係。我有點困惑。UML中的繼承和依賴關係建模

例如,我有兩個類FrontController和Controller。控制器擴展FrontController。另一方面,我有ICommand接口和實現ICommand的SaveEmployeeCommand。

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); 
    } 

控制器具有構造至極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

回答

0

您的圖表中的關係看起來是正確的,除了刻板印象。我會改變FrontController和ICommand之間的依賴關係到<<Instantiate>>