Central Message Manager,用于管理不同类之间的不同消息

时间:2013-09-29 13:36:24

标签: c# wpf design-patterns software-design

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

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

基本上我会有一个类让我们称之为MessageManager,每次操作后,不同的类会向MessageManager发送一条消息,而MessageManager将根据响应发送消息。然后我将让另一位经理称之为UIManager它将执行所有UI切换,或者在需要任何核心/帮助操作的情况下通知MessageManager

现在事情是消息可以弥补50-60种类型,每种类型都有不同类型的参数。我希望以某种方式设计它,如果我将来有新消息,它也可以容纳它。

在C#中实现这一目标的最佳方式是什么,例如对于此类案例代表,事件最佳。灵活性是最重要的。

1 个答案:

答案 0 :(得分:1)

我相信将Observer模式(发布/订阅逻辑)与Mediator结合起来可以很好地解决您的问题。您的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的特定子类型的特殊性应该转移到较低级别:直接消费者。