我在属于不同聚合的几个实体中有一些共同行为,我想将其纳入抽象类。
让不同聚合中的实体继承自一个公共抽象类有什么缺点吗?
用例
一些实体具有名称、描述或其他可以翻译成不同语言的属性。
例如,我将使用 设置名称setName(language, name)
并使用 检索它getName(language)
。
每种语言的每个文本都存储在一个对象中,例如:
class EntityName
{
protected Entity entity;
protected Language language;
protected String text;
protected int version;
public EntityName(Entity entity, Language language)
{
this.entity = entity;
this.language = language;
this.version = 1;
}
// setText(), getText(), ...
}
对于给定的Entity
类,EntityName
在Entity
聚合内。只能通过和Entity
来创建、读取和写入。EntityName
setName()
getName()
但是,诸如EntityName
, EntityDescription
,之类的类OtherEntityName
都将共享几乎相同的代码。唯一比变化的部分是对聚合的引用,因此是对构造函数的引用。