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

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

パターンが好きコミュのデザインパターンの質問

  • mixiチェック
  • このエントリーをはてなブックマークに追加
えー、デザインパターンの質問はこのトピでどうぞ。
誰も回答しないようなら、僕が責任を持って回答します。回答できる範囲で、ですが。
JAVAコミュから来た方も歓迎します。

コメント(18)

デザインパターンじゃないんですけど、プログラムチップスが解りません
教えてください;
確かに「デザインパターン」の本は沢山あるのに「プログラムチップス」の本はあまりないのは不思議ですね。

正直、あまり知りません。でも、サンプル集はネットに転がってるので特に必要性を感じません。もちろんあった方が良いのは確かですけどね。

僕がプログラムで気をつけてるのは「原則」を守る事です。C++やJavaでは継承を使えるか否かが壁になっている人が多いのですが、原則を知っているとこの辺がわかって結構ちゃんとしたプログラムが書けます。原則の方がデザインパターンより実用性が高いと思っています。

http://mixi.jp/view_item.pl?id=55315
これからデザインパターンを勉強しようと思っています。
本は最近一冊購入したのですが、お勧めサイトがありましたら教えてください!


まずファイルとディレクトリの例のパターンを見てみたのですが、結局どこがポイントでどう活かせばいいの?という印象でしたあせあせ(飛び散る汗)
>3
どんな本を買いました?

デザインパターンを「ちゃんと」勉強するには、
http://www.amazon.co.jp/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E5%86%8D%E5%88%A9%E7%94%A8%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-%E3%82%A8%E3%83%AA%E3%83%83%E3%82%AF-%E3%82%AC%E3%83%B3%E3%83%9E/dp/4797311126
を買わないとダメです。そこに使い方が書いてあります。

あとファイルとディレクトリの例のパタンと云ってもわかりません。パタン名を云いましょう。コンポジットパタンとか。

>4
tipsのこと。
その本かで迷ったのですが違う方を買ってしまいましたあせあせ(飛び散る汗)
・紫の本
・SQLやjavascriptなども出ている
・外国人が集まって作り上げてる本
・絵や図でわかりやすくしようとしてる
が特徴の本を買いました。
紫が特徴なんですが、わかりますかね…?
そちらの本の本が良さそうであれば早めに切り替えることも考えてます。

ファイルとディレクトリのはcompositeパターンだったと思います。
それなくしてGoFは学べません。学生なら図書館や古本屋を利用しましょう。
パターンを使うには最初に「何がやりたいか」を明確にする必要があるのですがこの辺ができない人が多いんです。そういう痛い人にならないためにもぜひ読んでください。

ちなみにコンポジットパタンは実践向きです。
http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-1.html
とか参考にしてみてはどうでしょう。
ものすごくお勧めなんですね!勧められたものはすぐに実践するのがモットーなので、さっそく明日購入してその本を先に読みはじめてみることにします。
ちなみに、他の本と違う点・他の本に足らない点は何でしょうか?結論は了解しましたが、その理由も教えて頂きたいです。

(当方、一応会社員でして開発歴二か月ほどで色々と勉強中の身です。)
オリジナル本ということです。ぶっちゃけ、他はすべて偽物。
お世話になっております。
質問をさせて下さい。

トップ画像の姉妹本である、中央が緑のjavaを元にパターンが説明されてる本を最近勉強しています。
7章BUILDERパターンまで順を追ってやってきて全体的にわからないことがあります。(というかinterfaceがわかってないのかもしれませんが。)
本ではapを修正、追加するときに効率よく最小限に…といっていますが、本の例にあがっているソースを実際に修正など考えた場合

続く
BUILDERパターンを例にすると、abstractクラス内を修正した上でそれを継承したクラス内も修正。

となると、結局ベタ書きとそんな変わらなくない?
と思ってしまうパターンがいくつかありました。何がわかってないでしょうか?あせあせ(飛び散る汗)
べた書きより大変かもしれません。
でもそれでいいんです。
ちゃんと効果があるんです。

デザインパターンのデザインの意味は設計です。設計で大切なことは如何に構造化するか。大きな機能を1つ作るより出来るだけ単純で小さい機能を複数つくりそれを組み合わせるのがよい設計です。

デザインパターンは、変わりやすいところ(VARIABLEPOINT)を分離し、変更発生時に備えるという設計が多く、それはビルダも同様で、機能を分割し局所化することで設計の最適化を図っています。アルゴリズムを分離するとかかかれてないですか?
コメントありがとうございます。

本の冒頭などを見てみましたがアルゴリズムという言葉は使っていないように見えました。ですが言っている意味はわかりました。


本のような小さいプログラムの例では効果が感じずらいと思うので、とりあえず文句言わずに23パターン全てやってみようかと思って今やっています。
singletonなどのテクニック系はわかりやすいんですけど、振る舞いなどは理解に時間がかかりそうですね〜
トップ画像の本は図書館で借りればいいです。是非とも中央が緑の本と併せて読んでみてください。その方が理解が早いはずです。
singletonパターンの質問をさせて下さい。パターンというよりstaticの話かもしれませんが…

--
getInstanceで下記のnewされたインスタンスを返す。
private static Test test = new Test();

このnewされたtestはstaticの指定があるためap起動時にヒープ領域に展開されているためreternで返すことができるのでしょうか?
だとするとstatic指定を忘れるとうまく動かないということになりますか?
まず、デザインパターンはあくまで設計なのでJavaとかC++とかの言語に依存してるんじゃないんですが、ご質問は、緑の本、つまりJava実装の話と判断します。

private static Test test = new Test();

コンストラクタがprivateのとき、Testというインスタンスは世の中にひとつだけということが「保障」されます。インスタンスはエントリメソッドから取得します。

sample:
public class Test{
private static Test test = new Test();
public static Test getTest(){return test;}
}
public class Main{
public static void main(String[] args){
Test test = Test.getTest();
}
}
最新コメントにあるsingletonの実装で
private static Test test = new Test();
とありますが、staticが付いているということは、
プログラム実行時にTestクラスのインスタンスが生成されて(Testクラスがメモリ展開されて)、あとは呼び出すだけの状態になっているという認識なのですが
あっていますでしょうか?

___

パターンの勉強を以前進めていた時期があったのですが、
それ以前にスレッドとか色々勉強しなきゃいけないことがまだあるのに
今の俺には優先度低いかな〜と思い一旦止めて基礎本の弱いところを
再開しています。

といっても完全に止めたくはないなぁというのがあるので、
色々な人の意見を参考にして、
1.多用する上に理解しやすい
2.多用する
3.・・・
のように優先度を付けて進めて行こうかなと考えているところです、

ログインすると、残り1件のコメントが見れるよ

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

パターンが好き 更新情報

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

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

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