2

我有一个将消息保存在数据库中的功能。根据类型保存消息有不同的方案。例如,我有保存消息、保存消息以进行修复和从 XML 保存消息。

一个明智的方法是创建一个带有指定操作类型的参数的函数,并在调用三种不同方法之间选择一个 switch case 吗?

到目前为止,我已经想出了这个:

public bool SaveMessage(Message message,
                        List<Image> images,
                        List<Attachments> attachments,
                        string type);

并具有其他三种方法:SaveMessage()SaveMessageForRepair()SaveMessageXml()

这是一个合理的方法吗?

4

2 回答 2

5

使用策略模式

定义一系列算法,封装每个算法,并使它们可互换。策略让算法独立于使用它的客户而变化。

http://www.dofactory.com/Patterns/PatternStrategy.aspx

于 2012-05-23T08:32:38.533 回答
0

创建一个对象,该对象封装了包括消息类型在内的所有信息,并将其传递给将该消息保存在数据库中的函数。现在目标函数将决定保存位置和保存方式。

这样,如果系统中引入了新的消息类型,将很容易覆盖行为并扩展功能。

于 2012-05-23T08:24:20.747 回答