如何做扩展的设计?

fwt1314111 fwt1314111 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
举个简单的例子,

有一个用户发布新闻的功能,

新闻实体

public class News

{

public string ID{get;set;}

public string UserID{get;set;}

public string Name{get;set;}

}

如果说用户发布一个新闻,则是调用逻辑类的AddNews()方法。

现在需要增加一个新需求,要控制用户发布新闻的数量。

最常规的做法就是在用户实体增加一个新闻数量的标记属性,在AddNews()里加入判断控制,同时每则增加一个新闻则改变新闻数量的标记。



我想请教的是:如何在一开始的设计中,就预留这种可能的扩展,在类的设计中应该怎么去做。能做到在新的需求中能最少的改变,实现最小的偶合。

盼高手指教,万分感谢!




问题补充:忽然想到,能不能这样设计:
public interface INews
{
void AddNews();
}
public class NewsRules:INews
{
public virtual void AddNews()
{
HttpContext.Current.Response.Write("添加成功");
}
}

public class NewsFactory
{
public INews GetFactory()
{
return new NewsRules();
}
}
客户端调用:
INews cmd = new NewsFactory().GetFactory();
cmd.AddNews();

如果有新的需求增加,比如以上列举的需求:
增加
public class NewsRules2:NewsRules
{
public override void AddNews()
{
//逻辑判断是否能增加
base.AddNews();
//增加成功,修改用户的发布数量
}
}
修改NewsFactory的GetFactory方法为
public INews GetFactory()
{
return new NewsRules2();
}
客户端调用不需要修改。

向各位大大们请教一下,以上的设计在实际项目中有实用价值吗?会不会有过度设计的嫌疑?
或者有什么更好的方法,能指教一下吗,谢谢
...全文
评论 6
收藏 已收藏
分享
返回顶部
fwt1314111
分析与设计 13,188 成员 5,759 内容