我試圖在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方法繼承)。我應該如何模擬這種情況?我提出了一些可能的解決方案的例子......任何建議?