デザインパターン
今回は Facade パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Facade パターンの登場人物 @Facade → 型 @Client → 型 facadeType : Class アノテーション定義 上記の定義の具体的な Java コード。 public final class FacadePattern { priva…
今回は Decorator パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Decorator パターンの登場人物 @Component → 型 @CreateComponent → 具象クラス componentType : Class @Decorator → 型 componentType : Class @Compone…
今回は Composite パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Composite パターンの登場人物 @Component → 型 @Add → メソッド @Remove → メソッド @GetChild → メソッド @Leaf → 型 componentType : Class @Composit…
今回は Bridge パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Bridge パターンの登場人物 @Abstraction → 型 implementorType : Class @ImplementorInstance → フィールド @Implementor → 型 abstractionType : Class @C…
今回は Adapter パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z LePUS3 and Class-Z Adapter パターンの登場人物 @Target → 型 @Adapter → 型 targetType : Class @AdapteeInstance → フィールド @Adaptee → 型 targetTyp…
今回は Builder パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Builder パターンの登場人物 @Director → 型 builderType : Class @builderInstance → フィールド @Construct → メソッド @Builder → 型 @BuildPart → メソッド @ConcreteBuild…
今回から、GoF 本に載っているデザインパターンについて、役割をマークするアノテーションを定義していってみましょう(一覧)。今回は AbstractFactory パターン。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z AbstractFactory パターン…
今回は Sigleton パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Singleton パターンの登場人物 @Singleton → 型 @Instance → フィールド @GetInstance → メソッド アノテーション定義 上記の定義の具体的な Java コード。 package org.waman…
今回は Prototype パターン(一覧)。 Wikipedia (English) Prototype パターンの登場人物 @Prototype → 型 @CreateClone → メソッド @ConcretePrototype → 具象クラス prototypeType : Class @Client → 型 prototypeType : Class アノテーション定義 上記の…
今回は Factory Method パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Factory Method パターンの登場人物 @Framework → パッケージ @Creator → 型 productType : Class @FactoryMethod → メソッド @PrimitiveMethod → …
今回の改善は、型に付加するアノテーションにパラメータを定義して、協調する役割(型)や関係のある役割(型)を指定できるようにすることです。例えば Iterator パターンにおいて、Aggregate は Iterator を生成しますが、Iterator の役割をするインターフ…
今回は、前回行った「『Java 言語で学ぶデザインパターン入門(結城浩)を参考にしてみる』」の続き。 少々、改善を試みます。改善点 今回改善を試みる箇所は、「Iterator と ConcreteIterator、Aggregate と ConcreteAggregate の間でメソッドに付加するア…
今回は、前回の問題点の解決法をチョットだけ違った形で。改善点 前回の解決方法「ConcreteXxxx アノテーションに定義されている子アノテーションを除去する」に加えて、@ConcreteIterator, @ConcreteAggregate アノテーションに代えて @Iterator.Concrete, …
以前に『アノテーションでデザインパターンの役割をマークする』ってな記事を書きました。 そこでは、定型のデザインパターンで役割を担っているクラスなどにアノテーションでマーク付けをしようという試みでした。ところで、デザインパターンと言えばやはり…
最後は「クラス・ベースの実現」。 ほどんど「インターフェース・ベースの実現」と同じですが、インターフェースの代わりに(ユーティリティー)クラスを用いているところが違います。 『Effective Java 第2版 (The Java Series)』で「定数インターフェース…
今回は「インターフェース・ベースの実現」。 この方法は定数インターフェースパターンと同じようなところがあるので、あまり良くないかと。アノテーションの実装 「インターフェース・ベースの実現」では、デザインパターン名と同じ名前のインターフェース…
今回は「enum ベースの実現」。 これは役割を指定するための列挙型を別途作成して、アノテーションの引数として使用する方法です。 この enum ベースの方法は、他の3つとチョット感じが違います。アノテーションの実装 「enum ベースの実現」では、 デザイン…
今回は「アノテーションでデザインパターンの役割をマークする」ための一番素直な実現、「パッケージ・ベースの実現」。 これは、1つのデザインパターンをマーキングするのに必要なアノテーションを1つのパッケージにまとめます(うーむ、当たり前?) 当然…
デザインパターンやフレームワーク、イディオムなどを使用する際、どのクラスやメソッドがどの役割を果たしているのかってのを分かりやすくするためにアノテーションを使ってはどうか?と思い、チョット試してみました。「アノテーションを読み込んで処理を…