異なる集合体に属するいくつかのエンティティでいくつかの共通の動作があり、抽象クラスを考慮に入れたいと思います。
異なる集合体のエンティティが共通の抽象クラスから継承することには欠点がありますか?
使用事例
いくつかのエンティティには、異なる言語に翻訳できる名前、説明、またはその他のプロパティがあります。
たとえば、で名前を設定し、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