ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaコミュのデザインパターン

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめましてm(__)m 
本日から参加させていただきました。
Javaについてみなさんと語り合えたらいいなぁと思っております。

さて、最近デザインパターンを勉強し始めたのですが、テキストを追っているだけではイマイチつかめないところが多々あります。そこで、実際のサンプルとか知っている情報等があれば教えてほしいです。

下の5つが今まで勉強したとこです。よろしくお願いします。
・Iterator
・Adapter
・Singleton
・Facade
・Flyweight

コメント(9)

はじめまして☆

二ヶ月の研修が終了したばかりのひよっこですが、
本だけは読みました!

サンプルが無いってことは、
使っているのはGoFのオリジナルテキストでしょうか?
デザインパターンの解説だと、
結城さんの入門書がメチャメチャ分かりやすかったです。

マーチン・ファウラーの本も、
「デザインパターンへの持っていき方」という意味で、
ものすごく面白かったですよー。
***************************************************
『増補改訂版Java言語で学ぶデザインパターン入門』
結城 浩 (著)
http://www.amazon.co.jp/exec/obidos/ASIN/4797327030/qid=1128116709/sr=8-1/ref=sr_8_xs_ap_i1_xgl/250-5322190-5596248
『リファクタリング』
マーチン・ファウラー(著)
http://www.amazon.co.jp/exec/obidos/ASIN/4894712288/qid=1128116830/sr=8-2/ref=sr_8_xs_ap_i2_xgl14/250-5322190-5596248
はじめまして。
自分もデザインパターンに強い訳ではないのですが、
結城さんの本でざっとどんなものか勉強して、
後はJavaのライブラリや他の人のソースでも見ながら
動きを追うのがよいのかなと思います。
java.util.Iteratorとか、〜.getInstance()とか、〜Factoryとか
よくありますよね。
IteratorやSingleton,Templateみたいなものは使いますが、
後はあまり使っていないです(使うような高度なものを書いていないからでしょうが(^^;))。
よく使うもの、あまり使わないものがあると思うので、
使うものからマスターすればいいのかなと思います。
コードからリファクタリングしてデザインパターンへ、というのであれば、「パターン指向リファクタリング入門」も、どーぞ。「リファクタリング」の続編といってもいい本です。

とはいえ、実際に使っていかないと身につかないものです。
こんにちは。

ノリ丸さんの言うとおり、よく使うパターンとそうでないパターンがあるので。使うやつから勉強したほうが良いと思います。

ちなみに僕のよく使うパターンは
Factory Method
Abstract Factory
Builder
Singleton
Facade
Command
Iterator
Template Method
です。

というか、これ以外のパターンは概要しか知りません。
それ以外はあまり使うときがないので「あ、あのパターン使えそうだな」とか思ったら、調べながらやったりしてます。

デザインパターンを調べて気になったんですが、もしかしてBridgeパターンてDIコンテナで使われてるパターンですかね。
だとしたらこれもよく使うかもしれません。
こんにちは。

パターンの勉強したわけじゃないのですが、
かづさんがあげているパターンはよく使うものだと思います。

個人的には、頻繁に使わないパターンなのですが
実際に自分が使ったケースとして「Builderパターン」の応用例を紹介します。

Decimalの四則演算を簡単に扱うことのできるものでが、
名前が 〜Builder ではないのは、Builderパターンを意識したものではないからで、個人的な趣味です(笑

// 四則演算を扱うためのクラスです。
class DecimalModel {

public static final HUNDRED = new BigDecimal("100");

private BigDecimal model;

private DecimalModel(BigDecimal value) {
this.model= value;
}

public DecimalModel add(BigDecimal value) {
this.model.add(value);
return this;
}

public DecimalModel multiply(BigDeicimal value) {
this.model.multiply(value);
return this;
}

public DecimalModel divideRoundDown(
BigDecimal value, int scale) {
this.model.divide(value, scale, BigDecimal.ROUND_DOWN);
return this;
}

public Double toDouble() {
return new Double(model.doubleValue());
}
}

// DecimalModelのクライアント実装
// (単価+利息)× 数量 ÷ 100 =金額
Double amount = new DecimalModel(price)
.add(interest)
.multiply(quantity)
.divideRoundDown(DeciamlModel.HUNDRED, 3)
.toDouble();

実際には、四則演算の機能の網羅、
コンストラクタをオーバーロードしていろんな初期化方法を提供、
例外の扱いや null, 0 divide などの考慮をするのですが、あくまでも実際に使われるケースとしてサンプルを示してみました。
この例でいうとクライアント側で、値が null だったり、0 立ったりする場合のケースの考慮が必要ないってので 分岐処理なしで四則演算ができるという点が特徴です。

ちょっと、変則的な例でよい例ではないのですが、パターンは実際に使って(使えて)なんぼだと思います。
Hello Worldといえばこれでしょう。
http://developers.slashdot.org/comments.pl?sid=33602&cid=3636102
1>サンプルが無いってことは、
使っているのはGoFのオリジナルテキストでしょうか?

そうですね。ソフトバンクパブリッシングから出ていた、GoF本 の邦訳(但し改訂版)には、CD つきで、中身は Java でのサンプルコード付きのパターンカタログだったような気もします。私はコードのテンプレートとしてよく利用した口です。

サンプルコードの作成は東芝の細谷さんだったかな。別のコミュで話題に上がったのですが(http://mixi.jp/view_bbs.pl?id=207373)、その細谷さんの著である 「Javaデザインパターンハンドブック」(http://isbn.sbpnet.jp/2793)もお勧めです。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java 更新情報

Javaのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング