タグ

GoFに関するkiyo_hikoのブックマーク (57)

  • 事例で学ぶデザインパターン 第3回 | オブジェクトの広場

    事例で学ぶデザインパターン 第3回 Template Methodパターン サブクラス化による重複実装の排除と機能のプラグイン (株)オージス総研 福田 直樹 Template Method パターンはサブクラス化を行って機能を拡張する際に用いられるデザインパターンであり、ソースコードの洗練を行う際にも有効なテクニックです。アプリケーション開発のためのフレームワークを活用する際にも暗黙的にTemplate Method パターンを活用して機能をプラグインするような適用例もあります。 ※雑誌『Java WORLD』2006 年 6月号に掲載した記事のオリジナル原稿を Java WORLD 編集部の了解を得て掲載しています。 前回のおさらい 前回は、最初のデザインパターンとしてIteratorパターンを取り上げました。Iteratorパターンは、要素を集約するオブジェクトに対してデータ構造に依

    kiyo_hiko
    kiyo_hiko 2020/10/21
    いずれちゃんと読む。今の自分のやり方だとこういう処理はFileModelなど出力のモデルクラス作ってそいつにtoHtmlとtoCsvメソッド等個別の出力書いてる事が多い。あと加工しつつ出力するのタスクが混ざって嫌いなので文字数
  • デザインパターンを置き換えよう! Javaラムダ式によるシンプルコーディング一覧

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    デザインパターンを置き換えよう! Javaラムダ式によるシンプルコーディング一覧
    kiyo_hiko
    kiyo_hiko 2015/06/19
    lambdaをGoFに当てはめるの 興味深い
  • デザインパターン検出ツール Tsantalis

    Tsantalisというデザインパターン検出ツールが「edubase Stream ソフトウェアパターン第9回ツール活用」で紹介されていた。 Tsantalis デザインパターン検出ツールとは、既存のソフトウェアについて既知のパターンが適用されているかどうかを検出するツール。 既存のプログラムの理解を容易にし、プログラムを修正しやすくなる。 TsantalisはJavaのクラスファイル集合から12のGoFデザインパターンを検出する。 複数のデザインパターンの重ね合わせを扱うことができ、軽快で精度がいい。 割り切れば使える、とのこと。 Tsantalisが検出する仕組みは、対象ソフトウェアをグラフ化し、既知デザインパターンのグラフが含まれるかを判定する。 部分グラフの同型判定問題である。 規模の大きいJavaプログラムを読む時には、試してみる価値がありそうだ。

    デザインパターン検出ツール Tsantalis
    kiyo_hiko
    kiyo_hiko 2014/12/05
    さきほど何かの本でやっぱりデザインパターンを自動検出するツールがあるというのを知ったが、このブログで紹介されているTsantalisっぽい
  • 再考: GoF デザインパターン - Qiita

    投稿は私の主観によって書かれています。コメントは大歓迎です。もし長くなるようでしたら別途記事に投稿し、リンクを張っていただけると嬉しいです。 概要 GoFのデザインパターンは適当すぎるから、いい加減、修正されるべき。 参考までに各パターンに対するコメントを書く。 GoFのデザインパターン GoFのデザインパターンは適当であり、教科書通りに学ぶべきものではないように思う。 以下がGoFのデザインパターンの良くない原因だろう。 が出版されたのは1994年であり、Java(1995)が出てくるよりも前だった オブジェクト指向が未成熟な時代にカタログ化された 現代のプログラミングと合致しないものが多い 「オブジェクト指向における~」と断っている以上、OOPに絡める必要があった パターンのいくつかに「多態性を用いると便利」という蛇足がついている 挙げたパターンに根拠がない 「とりあえず、23個ほ

    再考: GoF デザインパターン - Qiita
    kiyo_hiko
    kiyo_hiko 2014/10/05
    意識して使用するのFacade、Observer、Strategy、Stateぐらいだった。よくわからない
  • 6. Prototype パターン

    6.1 Prototype パターンとは 第6章では Prototype パターンを学びます。prototype という単語は、日語で「試作品」「原型」といった意味を持ちます。Prototype パターンは、あらかじめ用意しておいた「原型」からインスタンスを生成するようにするためのパターンです。 例えば、「直線を描く」機能しか持たない図形エディターを想像してみましょう。この図形エディターで星型を書きたいときには、直線を組み合わせることで、星の形を作成していくことになります。では、星型がいくつも欲しいときはどうすればよいでしょう?直線を組み合わせて星型を描くという作業を何度も繰り返す必要が出てきます。こんなとき、最初に作成した星型(直線の集まり)を「プロトタイプ」として登録しておき、これをコピーすることで星型が作成できれば、作業がとても楽になります。 Prototype パターンは、このよ

    kiyo_hiko
    kiyo_hiko 2014/10/05
    生成より複製のコストが低いときに使う感じ?
  • Prototype パターン - Wikipedia

    Prototype パターン(英: Prototype pattern、プロトタイプ・パターン)とは、ソフトウェア開発で用いられる、生成に関するデザインパターンの1つである。生成されるオブジェクトの種別がプロトタイプ(典型)的なインスタンスであるときに使用され、このプロトタイプを複製して新しいオブジェクトを生成する。 このパターンは Abstract Factory パターンでなされるように、クライアント・アプリケーションにおいてオブジェクトの生成者をサブクラスにすることを回避する 標準的な方法(例えば'new')で新しいオブジェクトを作ることによる固有のコストが所与のアプリケーションにとって高すぎる時にそれを回避する ために用いられる。 このパターンを実装するには、純粋仮想 (pure virtual method) の clone()メソッドを指定する抽象的(abstract)な基底ク

    Prototype パターン - Wikipedia
  • デザインパターンとともに学ぶオブジェクト指向のこころ を読んだ - takatoshiono's blog

    読んだ理由 最近、ソフトウェアの設計力が不足していると感じる。もっといい感じにクラスを設計して、オブジェクト指向ぽいプログラムを書けるようになりたい。しかもスピード感を持ってやりたい。ということで、いまさらだけど、オブジェクト指向についてもう一度学んでみようと思った。を読めばいいという訳じゃないけど、とりあえずもっと知識を増やしたい。渋谷の東急百貨店 7F の丸善&ジュンク堂書店に行って、 オブジェクトデザイン (Object Oriented SELECTION) エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践) オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES) の3冊で悩んだ結果、これを買った。決める要因となったのは、 ついでにデザインパターンについて理解を深められたらいいなと思った これまで

    デザインパターンとともに学ぶオブジェクト指向のこころ を読んだ - takatoshiono's blog
  • Yの村 blog :: MVCパターンの適用限界を考える(1)

  • Chain of Responsibility vs Observer pattern

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    kiyo_hiko
    kiyo_hiko 2014/04/14
    ううむ…汎関数に個別の処理を関数オブジェクトで渡すイメージに似てるのかな…?
  • Symfony Event Dispatcherで遊んでみた - hnwの日記

    Symfony Event Dispatcher とは Symfony Event DispatcherというのはPHPフレームワークであるsymfonyに含まれるライブラリで、GoF*1のObserverパターンの変種です。 このクラスは現在Symfony Event Dispatcherという名前で単体公開されていますので、symfony以外のプロジェクトでも気軽に利用できると思います。全部で300行程度の小さいライブラリで、テストコードが29件書かれています。 また、ガイドとAPIリファレンスが書かれています。レシピ集を見ればsymfonyでどう利用されているかを垣間見ることが出来ます。テストカバレッジ率100%なんてことも書いてありますね。 稿では、PHP5に対応したObserverパターンの実装としてのSymfony Event Dispatcherについて紹介します。 Obs

    Symfony Event Dispatcherで遊んでみた - hnwの日記
    kiyo_hiko
    kiyo_hiko 2014/04/14
    Observerの使いどころがパッと思いつかなかったのでさんこうになった。
  • ダイナミックObjective-C(109) デザインパターンをObjective-Cで - Observer (1)

    前回までは10数回に渡って、Objecgtive-C 2.0の話題を取り上げてきた。ガベージコレクション、プロパティ、Fast Enumerationといった、新規に追加された主要な要素について説明できたので、そろそろ中断されていた元の話題に戻るとしよう。 戻ってくるのは、デザインパターンの話だ。GoFのデザインパターンをObjective-Cで実装するのと同時に、Cocoaフレームワークの中からそれに似たパターンを取り上げて、比較しながら議論するのだ。以前の内容を忘れてしまった人は、連載の第95回以前を見てほしい。 デザインパターンの再開第一弾で取り上げるのは、Observerパターンだ。他のオブジェクトを監視して、その変更通知を受け取る、というパターンになる。 Observerパターンとは Observerパターンは、「監視」のためのパターンだ。あるオブジェクトの状態を監視して、何ら

    ダイナミックObjective-C(109) デザインパターンをObjective-Cで - Observer (1)
    kiyo_hiko
    kiyo_hiko 2014/04/14
    最近完全に事務屋だしすっかり忘れてた。Subject (attach/detach/notifyObservers) = Java APIのObservableに似る (あちらは自分が変更されたかも管理してる模様) と、Observerの具象クラスをいろいろ用意してnotifyでObserver.updateを順次呼ぶ
  • リファクタリング―プログラムの体質改善テクニック読んだ - 銀の人のメモ帳

    リファクタリング―プログラムの体質改善テクニック (Object Technology Series) 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史出版社/メーカー: ピアソンエデュケーション発売日: 2000/05メディア: 単行購入: 94人 クリック: 3,091回この商品を含むブログ (307件) を見る 残念ながらピアソン桐原から出版されていたので、現在は手に入りにくいんだけど、読んだ。 内容的には、リファクタリング手法のカタログみたいな感じだと思う。5章くらいまでは、導入とか、リファクタリングの心構えみたいな事が書いてある。 リファクタリングをするときに「いつすべきか?」というのが問題になると思うんだけど、このでは、機能を実装するときにその周辺をリファクタリングするといいと書いてあった。これは「動いてるものは触るな」っていう考

    リファクタリング―プログラムの体質改善テクニック読んだ - 銀の人のメモ帳
    kiyo_hiko
    kiyo_hiko 2014/03/14
    Strategyは教養ない人間でも早く覚えてくれないとメソッド内がifの嵐になってウザくなりそう。あれでOOの利点を実感したしパターンはやっぱ誰でもすぐ勉強したほうがいい気がする
  • dpinfo.html

    目次 はじめに Abstract Classパターン Abstract ClassパターンRuby版 (by 助田雅紀さん) Balkingパターン Before/Afterパターン Futureパターン FutureパターンRuby版 (by 助田雅紀さん) Generation Gapパターン Hook Operationパターン Hook OperationパターンRuby版 (by 助田雅紀さん) Immutableパターン Marker Interfaceパターン Monostateパターン MonostateパターンRuby版 (by 助田雅紀さん) MonostateパターンPerl版 (by 宮川さん) Null Objectパターン Null ObjectパターンとSingletonパターン Producer-Consumerパターン Sharableパターン Singl

    kiyo_hiko
    kiyo_hiko 2013/10/25
    GoF以外のパターン Producer/Consumerなどがある
  • サイト閉鎖のお知らせ | ASCII Books

    ASCII Booksのサイトをご利用いただき、ありがとうございます。 2016年12月6日をもちまして、サイトを閉鎖させていただくことになりました。 今までサイトをご利用いただき、ありがとうございました。 アスキー・メディアワークスを引き続き、よろしくお願いいたします。

    kiyo_hiko
    kiyo_hiko 2013/10/02
    これはすごそう
  • デザインパターンの自動化

    .NETで簡単な例を見てみましょう。 public Person : INotifyPropertyChanged { string firstName, lastName; public event NotifyPropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { if ( this.PropertyChanged != null ) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public string FirstName { get { return this.firstName; } set { this.firstName

    デザインパターンの自動化
  • kagamihoge:Template Method から Strategy へ

    kiyo_hiko
    kiyo_hiko 2013/02/27
    「Template Method の使いどころは存在しないという日記か何かをどこかで見た」 / ううむ…Strategyでよくね、で終わっちゃうこと多い
  • Facade パターン - Wikipedia

    Facade パターンあるいは Façade パターン(ファサード・パターン)とは、GoF(Gang of Four; 4人のギャングたち)によって定義された、コンピュータソフトウェアのデザインパターンの1つである。Facade(ファサード)とは「建物の正面」を意味する。異なるサブシステムを単純な操作だけを持ったFacadeクラスで結び、サブシステム間の独立性を高める事を目的とする。 Facadeパターンの例として、サブシステムとしてのコンパイラーを考える。システムとしてのコンパイラーは字句解析器や構文解析器などから構成されている。これらの構成要素は、新たなコンパイラーやその他ソフトウェアを作成する上でサブシステムとして利用することが出来る。しかし、一般ユーザーにとってコンパイラーはソースコードからプログラムを生成するためのものであり、ソースコードをコンパイルできる機能があれば十分である。

    Facade パターン - Wikipedia
    kiyo_hiko
    kiyo_hiko 2013/02/18
    要点を復習 1.Facadeは窓口に徹し、詳細な実装を持たない。2.Facadeが被さっている (3.もあって隠蔽してるわけじゃない) サブシステムからFacadeを使うことはない。3.Facadeはサブシステムへのアクセスを妨げるものじゃない。
  • Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社

    はじめに ソフトウェア・パターンという言葉を聞いたことがあるだろうか。ソフトウェア・パターンの中ではデザイン・パターンが有名であり、すでに実際の開発現場で適用されている方も多いと思われる。 デザイン・パターン以外にも多くのソフトウェア・パターンが存在しているのだが、残念ながら、デザイン・パターン以外のパターンについてはあまりよく知らないという方が多いのではないだろうか。 ソフトウェア・パターンに関する知識は、我々ソフトウェア開発者にとって、今後ますます重要になってゆくであろう。 連載では、ソフトウェア・パターンについて学びたい読者や、デザイン・パターンは知っているけれど他のパターンについてはあまり知らないという読者を対象に、さまざまなソフトウェア・パターンについて解説していく予定だ。 ソフトウェア・パターンとは そもそも、ソフトウェア・パターンとは何だろうか。ひと言でいえば、ソフトウェア

    Java開発者必修! ソフトウェア・パターン専科 ソフトウェア・パターンへのいざない | ウルシステムズ株式会社
    kiyo_hiko
    kiyo_hiko 2012/12/19
    Yes OCPちょう大事
  • - Open-Closed Principle とデザインパターン

    1999/09/03 更新 石井 勝 さて,このセクションではデザインパターンを統一的に理解するために,「 Open-Closed Principle (OCP) 」 という設計ルールに基づいてパターンを眺めてみることにします.まず OCP の意味と解説を行い,その後デザインパターンを OCP の観点から見てみます.実は,デザインパターンのうちの多くは OCP を満たすために用意されたものと考えることができるのです.このセクションでは, OCP を理解し,数あるデザインパターンの中からどういう場合にどのパターンを使うのが一番効果的なのかを考えます. GoF のデザインパターンは,全部で 23 個ものパターンがあります.このデザインパターンは,多くの局面で繰り返し現れる設計を抽出したものですから,オブジェクト指向のエッセンスを集めたものだと言えるでしょう.オブジェクト指向には,カプセル化,継

    kiyo_hiko
    kiyo_hiko 2012/12/11
    なるほ OCPを維持しつつ何らかの柔軟性を得るために、いくつかのGoFパターンがあるという見方