如何做扩展的设计?

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();
}
客户端调用不需要修改。

向各位大大们请教一下,以上的设计在实际项目中有实用价值吗?会不会有过度设计的嫌疑?
或者有什么更好的方法,能指教一下吗,谢谢
...全文

相关推荐

软件设计过程中画用例图的步骤

软件设计需求分析阶段,需要画用例图,本文介绍了用例图的画法。。。

cocoqiuyan

一个前端报表设计器的设计分析

本文主要探讨了前端报表设计器的设计,以Qlik Sense的报表设计器为例,介绍了其核心类的设计,包括外部接口类如Workshop和WidgetFactory,以及内部实现类如Layout、Desktop和Cell。设计着重于Widget的扩展性和布局的灵活性,支持拖拽、调整大小等功能,并通过History类提供了撤销重做操作。

A傅劲

设计模式大作业绘图系统【六种设计模式+文档】

本文档详述了一个使用备忘录模式、简单工厂模式、迭代器模式、状态模式、模板方法模式和单例模式设计的Java绘图系统。系统包括铅笔、画刷等绘图工具,支持撤销、重做、保存等功能,通过设计模式提高了代码的可维护性和扩展性。

老杨没掉头发

软件工程:(四)概要设计

本文介绍了软件工程中概要设计的定义、主要内容、任务、过程等。概要设计是连接用户研究与设计的重要阶段,主要任务是将系统扩展用例图转换为软件和数据结构。还介绍了层次图、HIPO图、结构图等图形工具,强调其是软件设计关键,为详细设计做参考。

吴士龙

中小银行核心系统去耦和扩展性架构设计.docx

中小银行核心系统去耦和扩展性架构设计.docx

科技互联人生
评论 6
收藏 已收藏
分享
返回顶部
fwt1314111
分析与设计 13,188 成员 5,759 内容