マーカー・インターフェースの階層的宣言による、クラスの階層的分類について
Javaの interface で、中身が空っぽの「マーカー・インターフェース」があるじゃないですか。
例えば、java.io.Serializableみたいな。
これは、クラスに「印」をつけて、それに属するものかどうかを判断するのに使われるのですが、
interface を階層的に宣言して、より詳細なカテゴリ分けができることに気がつきました。
例えば、データベース関係のDAOならば、このような感じでしょうか。
interface DAO { interface Master {} interface Transaction {} interface Log{} interface Const{} } /** 商品DAOクラス。DAOであり、その中のMasterに分類される。 */ public class ItemDAO implements DAO.Master { ... }
これは、特にシステムの「コア」な部分にたずさわる人に有用に思えます。
それに、DAOに限ったことではなくて、ほかにも有用な場面がありそうです。