« POW-WOW Tシャツ展最終告知です。 | メイン | オリジナル小規模グッズほしい »



やる夫がデザインパターンをやるようです 第20回

やる夫がデザインパターンをやるようです 第20回をはてなブックマークに追加 やる夫がデザインパターンをやるようです 第20回をdel.icio.usに追加  Yahoo!ブックマークに登録 やる夫がデザインパターンをやるようです 第20回をGoogle Bookmarksに追加 やる夫がデザインパターンをやるようです 第20回をtwitterにポスト
  ふむ。配列やArrayListで持っていた
  コレクションクラスもイテレータを返せば
  忍法コレクションを追加しても楽だったお。
     ____
   /      \
  /  ─    ─\
/    (●)  (●) \
|       (__人__)    |
/     ∩ノ ⊃  /
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ / 

public void listAbilityCollection(){

    // 潜在能力コレクションの取得・・・
    // 魔法コレクションの取得・・・
    Iterator ptntItr = potentialCollection.createIterator();
    Iterator mgcItr = magicCollection.createIterator();
    
    // コレクションを追加してもイテレータで受ける
    Iterator nnpItr = ninpoCollection.createIterator();

    listAbilityCollection( ptntItr );
    listAbilityCollection( mgcItr );
    listAbilityCollection( nnpItr );
・・・・

// イテレータでもらうので走査は1つ。
private void listAbilityCollection( Iterator itr ){
    while( itr.hasNext() ){
        AbilityItem abiItem = (AbilityItem)itr.next();
        System.out.println( abiItem.getName() );
        System.out.println( abiItem.getDescription() );
        System.out.println( abiItem.getEffectiveValue() );
    }
}





  保守、維持管理ばっか気にして
  ごちゃごちゃうるさいだけの
  オトコかと思ってたけど見習うとこもあるお
     ____
   /      \
  /  ─    ─\
/    (●)  (●) \
|       (__人__)    |
/     ∩ノ ⊃  /
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ / 







   / ̄ ̄\   やる夫、今回の件でまた仕様変更だ。
 /  _ノ   \
 |   ( ●)(●)l
. |    (__人__) |
  |    ` ⌒´ |
.  |         }
.  ヽ        }
   ヽ     ノ
   /    く
   /     ヽ 






     ____ 
   /      \  やっぱ全然見習えないお。
  /  ─    ─\
/    (○)  (○) \
|       (__人__)    |
/     ∩ノ ⊃  /
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ / 








  listAbilityCollectionを3回も呼び出しているところは
  1つにまとめたい。
  結果から言うと各Collectionそのものも
  リストで保持したい。できるか?
        / ̄ ̄\          ・・・・。
      /       \       ___
      |::::::        |    /     \
     . |:::::::::::     |   /⌒   ⌒  \
       |::::::::::::::    | / (●) (●)   \
     .  |::::::::::::::    }  |    (__人__)     | 
     .  ヽ::::::::::::::    }  \   ` ⌒´     _/
        ヽ::::::::::  ノ    |           \
        /:::::::::::: く     | |         |  |
-―――――|:::::::::::::::: \――┴┴―――――┴┴―― 






public class AbilityMgr {
    ArrayList abilities;
    // コレクションクラスが入ったArrayListでもらう。
    public AbilityMgr( ArrayList abilities ){
        this.abilities = abilities;
    }

    // ArrayListを展開してコレクションを受けて走査する
    public void listAbilityCollection(){
        Iterator abilitiesItr = abilities.iterator();
        while( abilitiesItr.hasNext() ){
            Collection collection = (Collection)abilitiesItr.next();
            listAbilityCollection( collection.createIterator() );
        }
    }
    // 変更なし。
    private void listAbilityCollection( Iterator itr ){
        while( itr.hasNext() ){
            AbilityItem abiItem = (AbilityItem)itr.next();
            System.out.println( abiItem.getName() );
            System.out.println( abiItem.getDescription() );
            System.out.println( abiItem.getEffectiveValue() );
        }
    }
}
  意外とかんたんだお。潜在能力でも
  魔法でも忍法でもArrayListにつっこめお。
  展開してイテレータで走査すればいいお。
         ___
       / ⌒  ⌒\
      / (●)  (●) \
    /   ///(__人__)/// \
     |   u.   `Y⌒y'´    |
      \       ゙ー ′  ,/
      /⌒ヽ   ー‐    ィヽ
      / rー'ゝ       〆ヽ
    /,ノヾ ,>      ヾ_ノ,|
    | ヽ〆        |´ | 








   / ̄ ̄\
 /   _ノ  \   で、だ。
 |    ( ●)(●)
. |     (__人__)
  |     ` ⌒´ノ
.  |         }
.  ヽ        }
   ヽ     ノ
   /    く
   |     \
    |    |ヽ、二⌒)








          ____
       / ノ  \\  で?で?っていう?で?なんだお。
      / (○)  (○)\ まだあんのかお。
    / ∪  (__人__)  \
    |      ` ⌒´    |
     \ /⌒)⌒)⌒)   //⌒)⌒)⌒)
    ノ  | / / /   (⌒) / / / /
  /´    | :::::::::::(⌒)  ゝ  :::::::::::/
 |    l  |     ノ  /  )  /
 ヽ    ヽ_ヽ    /'   /    /
  ヽ __     /   /   / 








   コレクションにもさらにネストして
   コレクションを持たせたい。
   これは、忍法・魔法・潜在能力コレクションの属性が
   リストである必要がでてきたからだ。
   具体的に言うと、

   name:火遁の術
   description:炎でダメージを与える。
   effect:延焼
   attribute:<ここにコレクションで属性を持つ>

   という変更だ。
   attributeには火遁の術に対する
   拡張属性がコレクションで投入されることになる。
        / ̄ ̄\
      /       \
      |::::::        |
     . |:::::::::::     |
       |::::::::::::::    |          ....,:::´, .
     .  |::::::::::::::    }          ....:::,,  ..
     .  ヽ::::::::::::::    }         ,):::::::ノ .
        ヽ::::::::::  ノ        (:::::ソ: .
        /:::::::::::: く         ,ふ´..
-―――――|:::::::::::::::: \ -―,――ノ::ノ――
         |:::::::::::::::|ヽ、二⌒)━~~'´ 








       ____
    /      \  会社辞めます。
   /  ─    ─\
 /    (●) (●) \ 
 |       (__人__)    |
 \     ` ⌒´   /
,,.....イ.ヽヽ、___ ーーノ゙-、.
:   |  '; \_____ ノ.| ヽ i
    |  \/゙(__)\,|  i |
    >   ヽ. ハ  |   || 







   / ̄ ̄\
 /  _ノ   \   めずらしくスーツ着てると思ったら
 |   ( ○)(○)l そうきたか。
. |    (__人__) |
  |    ` ⌒´ |
.  |         }
.  ヽ        }
   ヽ     ノ
   /    く
   /     ヽ






  てってってってっ てん。
  てんしょっく。てんしょっくだおー。
  かいしゃ、かいしゃ、やっめるおー。
  でっでっでっでっ でっていうー。
          ____ 
        / ―  -\
 ミ ミ ミ /   (○) (○)       ミ ミ ミ 
/⌒)⌒)⌒.      (__人__) \   /⌒)⌒)⌒) つ
| / / /      ` ⌒´   | (⌒)/ / / // 
| :::::::::::(⌒)           /  ゝ  :::::::::::/ 
|     ノ            \  /  )  / 
ヽ    /             ヽ/    / 
 |    |   l||l 从人 l||l      l||l 从人 l||l 
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、 
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) 








  (・・・派手に壊れてきてやがるな。)
  いいだろう。今回の案件を最後に
  やる夫で学ぶデザインパターンを終了にしてやる。
  (最近ロトとかにも手を出し始めたしな)
  まだまだデザインパターンはいくつもあるが、
  今回のコンポジットパターンを覚えたら
  あとは自分でやるんだ。もうひとり立ちできるだろう。
   / ̄ ̄\
 /  _ノ   \
 |   ( ○)(○)l
. |    (__人__) |
  |    ` ⌒´ |
.  |         }
.  ヽ        }
   ヽ     ノ
   /    く
   /     ヽ 






  ひっひっひっ とりだちー。
          ____ 
        / ― ― \ 
 ミ ミ ミ / (○) (○) \      ミ ミ ミ 
/⌒)⌒)⌒.   (__人__)   \   /⌒)⌒)⌒) 
| / / /    ` ⌒´     | (⌒)/ / / // 
| :::::::::::(⌒)           /  ゝ  :::::::::::/ 
|     ノ            \  /  )  / 
ヽ    /             ヽ/    / 
 |    |   l||l 从人 l||l      l||l 从人 l||l 
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、 
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒)) 







  結構ストレス抱えてやがったのか。
  こいつが居室でしょんべんした頃が懐かしいな・・。
   / ̄ ̄\
 /  _ノ   \
 |   ( ●)(●)l
. |    (__人__) |
  |    ` ⌒´ |
.  |         }
.  ヽ        }
   ヽ     ノ
   /    く
   /     ヽ 









        / ̄ ̄\
      /       \   しばらく休ませてみるか・・・。
      |::::::        |
     . |:::::::::::     |
       |::::::::::::::    |          ....,:::´, .
     .  |::::::::::::::    }          ....:::,,  ..
     .  ヽ::::::::::::::    }         ,):::::::ノ .
        ヽ::::::::::  ノ        (:::::ソ: .
        /:::::::::::: く         ,ふ´..
-―――――|:::::::::::::::: \ -―,――ノ::ノ――
         |:::::::::::::::|ヽ、二⌒)━~~'´ 
というわけで、やる夫で学ぶデザインパターンも20回に達しましたので、今回扱うコンポジットパターン(あと2回くらい)でとりあえず終了します。他にも知っておいて損はないパターンがいくつもありますし、ブックマークしていただいたり、BBSに貼っていただいたり、言及していただいたりと、見に来て頂きまして嬉しく思います。本当にありがとうございます。
結城浩先生のデザインパターン入門、オライリーのHeadFirstデザパタやもちろんGofのデザパタも参考にさせていただきました。ネットでもちょこちょこといろんなページを参考にさせていただきました。
やる夫ネタは書いてても意外とおもしろいので他の(技術)ネタでまたポストすることになると思います。やろうとしてるのは暗号技術とかそこらへんかと思います。そのときはまたよろしくです。

≪第19回最終回≫

★このコンテンツに目的の情報はありませんでしたか?


[ 最近のエントリーとその関連エントリー ]


[ スポンサードリンク ]

トラックバック

このエントリーのトラックバックURL:
http://mojalog.com/cgi/mt/mt-tb.cgi/317

コメント (2)

wっうぇ:

実に参考になります

ひげもじゃ:

参考になりますかww
それはよかったです!

コメントを投稿

ツリータイプ・カテゴリー

open all | close all

リファラから検索


サイト内検索