我有一个将消息保存在数据库中的功能。根据类型保存消息有不同的方案。例如,我有保存消息,保存消息以进行修复,以及从XML保存消息。
一种明智的方法是使用指定操作类型的参数创建单个函数,并在调用三种不同方法之间选择一个开关案例吗?
到目前为止,我已经想出了这个:
public bool SaveMessage(Message message,
List<Image> images,
List<Attachments> attachments,
string type);
并有其他三种方法:SaveMessage()
,SaveMessageForRepair()
和SaveMessageXml()
。
这是一种合理的方法吗?
答案 0 :(得分:5)
使用策略模式。
定义一系列算法,封装每个算法并制作它们 互换。策略让算法独立于 使用它的客户。
答案 1 :(得分:0)
创建一个对象,该对象封装包括消息类型在内的所有信息,并将其传递给在数据库中保存此消息的函数。现在,目标函数将决定保存位置和保存方式。
通过这种方式,如果系统中引入了新的消息类型,将很容易覆盖行为并扩展功能。