急:进态代码怎么解决动态需求?(高手进来)

panwen516 2008-04-02 10:52:23
有一张表A,包含一列,列名:MessageType varchar(20) ,此列每一行的数据表示一个消息,多个消息可以判断为一个事件(eg: 第一行数据为“connet”,第二行或其它的行的数据为“connetComplete”,这两行(两个消息)就决定了一个事件)。
现在有个用户选择事件窗体,可以多选也可以单选,选好后点击按钮生成表B(数据库表或内存表都可以),表的格式如下:
表B:
MessageType Event
connet
fxiet
connetComplete 接通(事件的名字)
.
.
. XX(另外一种事件)

MessageType列有很多消息,各种消息组合在一起可以判断为不同的事件(判断每种事件的消息是知道的)。

问题是:在代码中怎么满足用户的动态需求(用户的选择都是不确定的,没有选择的事件不在表B的Event列中显示出来,目前事件有100种以后还要增加),如果用户只选择一种事件那我直接判断满足事件的消息就可以了,但是用户选择不确定那我的判断也确定不下来呀,而且用IF判断100多种事件各位应该能想到逻辑有多复杂,并且没有用好的设计方法以后增加事件就会改动整块代码维护成本太高。
请各位高手赐教。
...全文
76 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
possible_Y 2008-04-08
  • 打赏
  • 举报
回复
用责任链模式啊

你写一个接口IMessageFilter
public interface IMessageFilter
{
public IMessageFilter Next
{
get;
}

public void Filter(Message entity);
}

然后写一个MessageFilterChain, 里面通过读取配置和反射的方式来组装一个IMessageFilter实现类的对象实例的链条

这样当用户需求变化新增一个消息类型的时候,你只要新写一个对应的IMessageFilter的实现类,然后修改配置文件,通过配置注入就可以了,以前的代码完全不变.

甚至你还以加入FileSystemWatcher监控配置, 这样你在更新系统时,连程序都不用停下来
panwen516 2008-04-08
  • 打赏
  • 举报
回复
然后写一个MessageFilterChain, 里面通过读取配置和反射的方式来组装一个IMessageFilter实现类的对象实例的链条

还是不太明白呀。配置文件没有写过,这个配置文件怎么写?
fuda_1985 2008-04-07
  • 打赏
  • 举报
回复
mark
北京的雾霾天 2008-04-07
  • 打赏
  • 举报
回复
看着有点晕。

是不是可以考虑使用反射解决一下。

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧