簡體   English   中英

命令設計模式和用戶交互

[英]Command design pattern and user interaction

我正在實現命令設計模式,但是我的命令需要詢問用戶文件名。 我不確定命令如何要求?

一幫四本書似乎觸及了這個問題,但我不太清楚。 下面是我的代碼(偽代碼是正確的並且是即時編寫的)。

class OpenDocumentCommand : public Command
{
    virtual char * AskUserForFileName();
    virtual void Execute();

    Application _App;
}

void OpenDocumentCommand::Execute()
{
   char * fileName = AskUserForFileName();

   _App.OpenDocument( fileName );
}

現在在典型的簡單示例中, AskUserForFileName()可以是cincout但是如何在適當的Windows應用程序中要求輸入文件名? 它應該打開文件資源管理器,用戶可以選擇文件名嗎?

這是否意味着它必須緊密結合窗戶? 我的計划是在Windows和iOS上都使用此代碼,因此我需要一個解耦的解決方案。

為了最大程度地減少命令和窗口之間的耦合,您至少應在它們之間插入一個抽象層。 在許多MVVM實現中,您可以找到“模態對話框”界面,該界面從調用的ViewModel中隱藏窗口的實現細節。

該接口至少包含一個方法“ ShowDialog()”,但是它也可以將ViewModel作為參數,並在用戶關閉它時返回一個回調以通知調用方。

這是一個例子:

public interface IModalWindow
2   {
3     bool? DialogResult { get; set; }
4     event EventHandler Closed;
5     void Show();
6     object DataContext { get; set; }
7     void Close();
8   }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM