デザインパターン
Java nio の API を見ていくシリーズ(目次)。 今回は、Files クラスに定義されている、ディレクトリ階層を走査するメソッドとそれに関連するクラス群を見ていきます。 java.nio では、ディレクトリ階層を走査す方法として、デザイン・パターンの1つである …
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Initialization On Demand Holder パターン。 このパターンは static フィールドの遅延初期化 (lazy initializa…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Double-checked Locking パターン。 このパターンは、複数のスレッドからアクセスされる可能性のあるフィールド…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Active Object パターン。 これは別名 Actor パターンとも呼ばれるので、GPars の Actor を使っての実装を試み…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Thread-Specific Storage パターン。 このパターンは java.lang.ThreadLocal を使えば実装できます。 あんまり …
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Two-Phase Termination パターン。 このパターンでは、スレッドを終了したいときにいきなり止めるのではなく、…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Future パターン。 このパターンでは、「引換券を、お先にどうぞ」と言うのが的を射ているように、まだ終わって…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Worker Thread パターン。 Worker Thread パターンも java.util.concurrent パッケージのクラスを使えば実装す…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Thread-Per-Message パターン。 このパターンは、メッセージ(リクエスト)が送られてきたら、それに対して1つ…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Read-Write Lock パターン。 このパターンも Java SE 5 で導入された java.util.concurrent パッケージ(正確に…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Producer-Consumer パターン。 Producer-Consumer パターンはやるべき仕事を見つけることとその仕事を実行する…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Balking パターン。 前回見た Guarded Suspension パターンでは、(キューが空になったり空きができたりなどの…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、今回は Guarded Suspension パターン。 Guarded Wait, Spin Lock などとも呼ばれるそうです。このパターンは java.util…
『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』に載っているデザインパターンを Groovy/GPars で書こうシリーズ、の続き。 今回は Immutable パターン。 状態が変わらないオブジェクトは、いつどのようにスレッドからアクセスされても…
以前、Single Thread Execution パターンを GPars の Actor を使って書き換えてみました。 そこでは門の役割をする Gate クラス自体を Actor のサブクラスである DefaultActor を使ってスレッドセーフな実装にしていました。 ただし、クラスをスレッドセーフ…
Groovy でのマルチスレッド・プログラミングを練習するために、『増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編』にあるマルチスレッド・プログラミングのデザインパターンを Groovy/GPars で書いてみます。今回は「Single Thread Execut…
デザインパターンの書籍に載っているクラス図や役割を見ていて、Client 役(クラス)があったりなかったりするので、有無を票にしてみました。特に「振る舞いに関するパターン」にはあるとかといったものは無いかな。 とりあえず、「AbstractXxxx」と「Concr…
さぁ、ラストの Visitor パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Visitor パターンの登場人物 @Visitor → 型 elementType : Class @Visit → メソッド @ConcreteVisitor → 具象クラス visitorType : Class @Element…
今回は State パターン(一覧)。 Wikipedia (English) LePUS3 and Class-Z State パターンの登場人物 @Context → 型 stateType : Class @StateInstance → フィールド @State → 型 @ConcreteState → 具象クラス stateType : Class アノテーション定義 上記の…
今回は Observer パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Observer パターンの登場人物 @Subject → 型 observerType : Class @Observers → フィールド @AddObserver → メソッド @DeleteObserver → メソッド @Notif…
今回は Memento パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Memento ・・・記念の品,形見; 思い出の種Memento パターンの登場人物 @Caretaker → 型 mementoType : Class @Originator → 型 mementoType : Class @CreateMemento → メソッ…
今回は Template Method パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Template Method パターンの登場人物 @AbstractClass → 型 @TemplateMethod → メソッド @PrimitiveMethod → メソッド method : String @ConcreteCl…
今回は Strategy パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Strategy パターンの登場人物 @Context → 型 strategyType : Class @StrategyInstance → フィールド @Strategy → 型 @ConcreteStrategy → 具象クラス stra…
今回は Mediator パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Mediator パターンの登場人物 @Mediator → 型 colleagueType : Class @CreateColleagues → メソッド @ColleagueChanged → メソッド @ConcreteMediator → 具象クラス mediatorT…
今回は Iterator パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Iterator パターンの登場人物 @Aggregate → 型 iteratorType : Class @CreateIterator → メソッド @ConcreteAggregate → 具象クラス aggregateType : Class…
今回は Interpreter パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Interpreter パターンの登場人物 @Context → 型 expressionType : Class @AbstractExpression → 型 @Interpret → メソッド @TerminalExpression → 型 expressionType : Cla…
今回は Command パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Command パターンの登場人物 @Command → 型 @Execute → メソッド @ConcreteCommand → 具象クラス commandType : Class @ReceiverInstance → フィールド @Receiver → 型 concret…
今回は Chain of Responsibility パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) Chain of Responsibility パターンの登場人物 @Handler → 型 @Next → フィールド @Request → メソッド @ConcreteHandler → 型 handlerType : Class Client → …
今回は Proxy パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Proxy パターンの登場人物 @Subject → 型 @RealSubject → 型 subjectType : Class @Proxy → 型 subjectType : Class @RealSubjectInstance → フィールド @Cli…
今回は Flyweight パターン(一覧)。 Wikipedia (日本語) Wikipedia (English) LePUS3 and Class-Z Flyweight パターンの登場人物 @FlyweightFactory → 型 flyweightType : Class @Pool → フィールド @GetFlyweight → メソッド @Flyweight → 型 @Concrete…