今回は、前回の問題点の解決法をチョットだけ違った形で。
改善点
前回の解決方法「ConcreteXxxx アノテーションに定義されている子アノテーションを除去する」に加えて、@ConcreteIterator, @ConcreteAggregate アノテーションに代えて @Iterator.Concrete, @Aggregate.Concrete アノテーションを用います。
アノテーションを定義する Java コード
上記の改善点を踏まえたアノテーション定義は以下のようになります。
package org.waman.tools.design.gof.IteratorPattern; import java.lang.annotation.*; public final class IteratorPattern { private IteratorPattern(){} /** 集約子 */ @Target(ElementType.TYPE) public static @interface Aggregate{ /** 反復子を生成するメソッド */ @Inherited @Target(ElementType.METHOD) public static @interface CreateIterator{} /** 具象集約子 */ @Target(ElementType.TYPE) public static @interface Concrete{} } /** 反復子 */ @Target(ElementType.TYPE) public static @interface Iterator { /** 次の要素があるかどうかの問い合わせを行うメソッド */ @Inherited @Target(ElementType.METHOD) public static @interface HasNext {} /** 次の要素を取得するメソッド */ @Inherited @Target(ElementType.METHOD) public static @interface Next {} /** 具象反復子 */ @Target(ElementType.TYPE) public static @interface Concrete{} } }
@Xxxx.Concrete アノテーションに @Inherited アノテーションを付加する必要はないでしょう。 一応、具象クラスを継承して抽象クラスにすることもできますし(やらない方が良いでしょうけど)。
サンプルコード in 『Java 言語で学ぶデザインパターン入門』
Book クラス, Iterator インターフェース, Aggregate インターフェース
これらは前回と同じです。
BookShelf クラス
Aggregate の具象クラス。 Aggregate インターフェースに定義されているメソッドには @Override アノテーションを付加しています。
import org.waman.tools.design.gof.IteratorPattern; @IteratorPattern.Aggregate.Concrete public class BookShelf implements Aggregate<Book>{ ... @Override public Iterator<E> iterator(){...} }
BookShelfIterator クラス
Iterator の具象クラスです。 Iterator インターフェースに定義されているメソッドに関しては @Override アノテーションを付加しています。
import org.waman.tools.design.gof.IteratorPattern; @IteratorPattern.Iterator.Concrete public class BookShelfIterator implements Iterator<Book> { @Override public boolean hasNext(){...} @Override public E next(){...} }
ほとんど変わってませんけど。

- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (395件) を見る

- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (201件) を見る