我想听听关于以下方面的一些建议和意见:
假设您有一些实体:NewsPiece、BlogPost、Article
一般来说,它们彼此非常相似,所以我制作了一个通用类
public abstract class InformationItem<TParent, TChild, TLike>
where TParent : InformationItem<TParent, TChild, TLike>
where TChild : InformationItemChild<TParent, TChild, TLike>
where TLike : InformationItemLike<TParent, TChild, TLike>
{
[Key]
public int Id { get; set; }
protected ICollection<TChild> childItems;
public virtual ICollection<TChild> ChildItems
{
get { return childItems ?? (childItems = new List<TChild>()); }
protected set { childItems = value; }
}
//and so on...
}
Child 和 Like 类也有类似的定义,因此我能够定义 BaseInformationService 并将其用作我的信息项(创建、编辑、发表评论、获取最新信息等)的所有操作的基本实现。
但最近我遇到了一个问题——这样的实现强制了派生类的结构,并使不需要注释的类(例如)具有不必要的功能。所以我决定让这个实现更灵活一点——我想要像 InformationItemServiceBuilder 这样的东西,它具有诸如 .WithComments 或 .WithLikes 之类的方法,它们能够仅构建具有所需功能的信息项服务。
您会建议哪种方法或设计模式?我应该尝试装饰器,还是其他更适合的东西?预先感谢您的回复。