1

我正在用 C# 编写一个应用程序。现在我一遍又一遍地思考它的设计。已经改变了我的想法 3 或 4 次,但谢天谢地。

经过几次迭代后,我想出了一个解决方案,但我仍然想知道用 C# 实现这一目标的最佳方法是什么。

基本上我会有一个类让我们调用它MessageManager,并且在每个操作之后,不同的类将发送一条消息,MessageManagerMessageManager根据响应发送消息。然后我将让另一个经理调用它UIManager,它将执行所有 UI 切换或通知MessageManager是否需要任何核心/助手操作。

现在的问题是消息可以组成 50-60 种类型,每种类型都有不同类型的参数。如果我将来有新消息,我想以某种方式设计它,它也可以适应它。

在 C# 中实现这一目标的最佳方法是什么,例如对于此类案例委托、事件来说最好的方法是什么。灵活性是最重要的。

4

1 回答 1

1

我相信将观察者模式(发布/订阅逻辑)与中介者模式结合起来可以很好地解决您的问题。您的 Mediator 类将充当事件管理器(您的大多数类将依赖它作为中介而不是相互依赖):

public class MessageManager{

    private Dictionary<string,List<MessageListener>> listeners;

    public void sendMessage(Message m){
        //loop over listeners of m
    }

    public void addMessageListener(MessageListener ml){
         //add a listener
    }

    public void removeMessageListener(MessageListener ml){
         //remove a listener
    }
}

Message将是父接口,在此级别具有通用抽象非常重要,因为它避免了MessageManager区分您的 50-60 类型的消息,从而成为维护的噩梦。取决于特定子类型的特殊性Message应移至较低级别:直接消费者。

于 2013-09-29T14:27:57.797 回答