我正在用C#编写一个应用程序。现在我一遍又一遍地思考它的设计。已经改变了我的想法3或4次,但谢天谢地。
经过几次迭代后,我想出了一个解决方案,但我仍然想知道用C#实现这一目标的最佳方法是什么。
基本上我会有一个类让我们称之为MessageManager
,每次操作后,不同的类会向MessageManager
发送一条消息,而MessageManager
将根据响应发送消息。然后我将让另一位经理称之为UIManager
它将执行所有UI切换,或者在需要任何核心/帮助操作的情况下通知MessageManager
。
现在事情是消息可以弥补50-60种类型,每种类型都有不同类型的参数。我希望以某种方式设计它,如果我将来有新消息,它也可以容纳它。
在C#中实现这一目标的最佳方式是什么,例如对于此类案例代表,事件最佳。灵活性是最重要的。
答案 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
的特定子类型的特殊性应该转移到较低级别:直接消费者。