タグ

デザインパターンに関するsugimoriのブックマーク (19)

  • 【PHPで学ぶデザインパターン入門】第6回 Observerパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作

    こんにちは、王です。 【PHPで学ぶデザインパターン】第6回はObserverパターンのご紹介です。 有名なのでご存知の方も多いと思いますが、「IFTTT」というサービスがあります。 このサービスはIf This Then Thatの頭文字を取ったもので、例えば「私が帰宅したら、彼女に、SMSで知らせるようにする」みたいなことができます。このように、あるイベントが発生したときに特定の行動をするものです。 「Observerパターン」とは 「私が帰宅したら、彼女に、SMSで知らせるようにする」の例で言うと、イベントは「私が帰宅したら」、行動は「彼女にSMSで知らせるようにする」、そしてSMS通知を受け取るのは「彼女」。さらに、通知を受け取る人は彼女に限定する必要はなく、たくさんの人に送ることもできますよね。 これが立派な「Observerパターン」です。 「Observerパターン」は以下の

    【PHPで学ぶデザインパターン入門】第6回 Observerパターン | 株式会社LIG(リグ)|DX支援・システム開発・Web制作
  • GRASPパターン - Strategic Choice

    GRASPについてGeneral(汎用)Responsibility(責任)Assignment(割り当て)Software(ソフトウェア)Patterns(パターン)オブジェクト指向設計の基とは、適切なクラスに適切な責任を割り当てることであるここでいう責任とは、クラスが何らかの処理を実行する責任(実行責任)と、クラスが持つ情報を把握する責任(情報把握責任)のことである。そして、この責任割り当ての指針がGRASPである。責任駆動開発設計responsibility-driven design : RDD「責任」「役割」「強調」の観点から設計を行う。GRASPはRDD一部であり、その手段である。一覧責任を割り当てる際の指針 生成者情報エキスパートコントローラ保守性・拡張性・再利用性を高めるための指針 疎結合性高凝集性クラスを洗練する時に使用 多相性人工品間接化バリエーション防護壁参考実践U

  • [雑記] 内部イテレータと外部イテレータ

    概要 コレクションの要素の列挙・反復の方法には、 内部イテレータと呼ばれる方式と外部イテレータと呼ばれる2つの方式(デザインパターン)があります。 ちなみに、列挙(enumerate)と反復(iterate)ってのは、 この分野において、 「コレクション内の全要素に対して処理する」って意味ではほぼ同義語です。 ただし、 C++iterator が順方向・逆方向・双方向・ランダムアクセス可能なのに対して、 C# の Enumerator が順方向アクセスしかできないので、 そのイメージに引きずられて意味を使い分ける場合もあります。 百聞は一見にしかずということで、具体例を出しつつ内部イテレータと外部イテレータについて説明しましょう。 例ということで、余計な機能は一切省いた以下のような低機能リストを考えます。 public class List { int[] items; public

    [雑記] 内部イテレータと外部イテレータ
    sugimori
    sugimori 2013/08/15
    なる程。言語も進化するということか。
  • GoFのデザインパターンの自作サンプルまとめ(主にRubyで実装。一部Java) - Tbpgr Blog

    概要 GoFのデザインパターンに関して取り扱った記事のまとめ 生成のパターン AbstractFactory | 詳細を意識せず抽象的にインスタンス生成を行う Builder | 複雑なインスタンス生成手順をクラス化する FactoryMethod | インスタンスの作成を独立させる Prototype | コピーしてインスタンスを作る Singleton | インスタンスが一つであることを保証する 構造のパターン Adapter | AとBのインターフェースのアダプターを作る Bridge | 機能の拡張と実装の拡張を分割する Composite | 容器と中身の同一視 Decorator | 飾りと中身の同一視 Facade | シンプルな窓口 Flyweight | 同じ物を共有して処理を軽量化する Proxy | 必要になってから作る Proxy | 必要になってから作る(Forw

    GoFのデザインパターンの自作サンプルまとめ(主にRubyで実装。一部Java) - Tbpgr Blog
  • Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと

    GoFのデザインパターンとは、「プログラミングのベストプラクティスを体系化したもの」です。このベスト・プラクティスをしっかりと理解して設計すれば、ソフトウェア設計の効率を高めることができます。またデザインパターンが「プログラミングの思想」の共有をよりスムーズにしてくれます。先人たちの試行錯誤の結果を効果的に利用して、プログラミングをもっと楽しんでしまいましょう! 🗻 デザインパターンのポイントGoFのデザインパターンには下のプリンシパルがあります。 変わるものを変わらないものから分離する インタフェースに対してプログラミングし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(You Ain’t Gonna Need It./YAGNI) 🤔 デザインパターン一覧 アブストラクトファクトリ ビルダ ファクトリメソッド シングルトンパターン アダプタ コンポジッ

    Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと
  • Visitorパターンで遊んでみたよ

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

    Visitorパターンで遊んでみたよ
  • 具体例で説明するデザインパターン

    デザインパターンってなんだかたいそうなものに考えられがちだけど、実は、そこかしこのライブラリや仕様に取り込まれていることが多い。 「デザインパターン分からん」とか「で、どうやって使うのよ」と悶々としている人には、「どういうところで使わているのか」を知っておけばイメージも沸きやすいし、意外にたいしたことないんだな、ということが分かるんじゃないだろうか。 そこで、JavaScript やその周辺の技術で、デザインパターンがどのように使われているかを紹介してみることにする。 ここでは、GoFの順番に沿って、以下の11個のパターンを取り上げる。 生成に関するパターンFactory MethodAbstract FactoryBuilderPrototypeSingleton構造に関するパターンAdapterComposite振る舞いに関するパターンChain Of ResponsibilityI

    具体例で説明するデザインパターン
    sugimori
    sugimori 2012/09/24
    間違えを探すのも勉強になるかも
  • 動的型付言語とデザインパターン - あどけない話

    「具体例で説明するデザインパターン」は、よく使われている JavaScript のデザインパターンについて分りやすく説明しています。 そもそも、僕がこのブログを始めた理由は、JavaScript のデザインパターンを議論したいからでした。(今では、全然違う内容になっていますが。^^;) そして、その議論を止めたのは、動的型付言語では、デザインパターンはそんなに重要でないと気付いたからです。 きっかけは、「ハッカーと画家」です。このの 201ページには、以下のような脚注があります。 ピーター・ノーヴィッグは『デザインパターン』に挙げられた23のパターンのうち16はLispでは「全く見えないか、あるいはより簡潔である」ことを見出した。 これは、「Design Patterns in Dynamic Programming」というスライドのことです。 Java でデザインパターンがもてはやされ

    動的型付言語とデザインパターン - あどけない話
    sugimori
    sugimori 2012/09/24
    言語による差も考えないとな
  • 2.Adapter パターン 1

    2012/04/26 一部修正しました デザインパターン 2章 Adapter パターン 2.1 Adapterパターンとは 2.2 サンプルケース1(継承を利用した Adapter パターン) 2.3 サンプルケース2(委譲を利用した Adapter パターン) 2.4 Adapterパターン まとめ 2.1 Adapterパターンとは 第2章では Adapter パターンを学びます。adaptという単語は日語で「適合させる」という意味で、adapterとは「適合させるもの」という意味になります。Adapterパターンは、インタフェースに互換性の無いクラス同士を組み合わせることを目的としたパターンです。 例えば、これまで利用していたメソッドと同じ機能を、よりすぐれた形で提供するメソッドを持つクラスの存在を知ったとします。しかし、このすぐれたメソッドは、これまで利用していたメソッドとは異

    sugimori
    sugimori 2012/09/24
    太郎くん、素直に実装しちゃうんだな。おもろい。
  • 矢沢久雄の早わかりGoFデザインパターン(1) | 日経 xTECH(クロステック)

    今回は、パターンを1つだけ紹介します。「Mediatorパターン」です。GoFでは、それぞれのパターンの「目的]「背景」「効果」などが明示されています。私も、ちょっと真似をしてみましょう。複数のオブジェクトを組み合わせてプログラムの機能を実現するという目的において、オブジェクト間の関連がゴチャゴチャになってしまうという背景(問題)があり、Mediatorパターンの採用によって関連をキレイに整理できるという効果があります。説明だけでは、何のことだかわからないと思いますので、具体例をお見せしましょう。 図1[拡大表示](1)をご覧ください。これは、UML(Unified Modeling Language、ユーエムエル)と呼ばれる表記法で記述されたプログラムの設計図です。UMLでは、四角形の中に下線付きで名前を書いてオブジェクトを表し、関連のあるオブジェクトを矢印で結んで示します。ここで関連

    矢沢久雄の早わかりGoFデザインパターン(1) | 日経 xTECH(クロステック)
  • デザインパターン[モデリング] -TECHSCORE-

    オブジェクト指向プログラミングにおいてデザインパターンを利用することは、開発者に様々なメリットを与えてくれます。 ここでは、「デザインパターンとは何か」というようなデザインパターンの基事項と、GoFの23個のデザインパターンをJavaを利用してわかりやすく解説します。 デザインパターン INDEX

  • 14.Chain of Responsibility パターン

    2012/04/26 一部修正しました デザインパターン 14章 Chain of Responsibility パターン 14.1 Chain of Responsibility パターンとは 14.2 サンプルケース 14.3 Chain of Responsibility パターンまとめ 第14章では Chain of Responsibility パターンを学びます。chain は「鎖」、responsibility は「責任」を意味します。したがって、 Chain of Responsibility は、「責任の鎖」と訳すことができます。Chain of Respoisibility パターンとは、「責任」を負ったものが、「鎖」状につながれた状態をイメージさせるパターンです。 例えば、何かの決済を「課長」にお願いすると、課長決裁で対応できるものであれば、課長が決裁します。しかし、

    sugimori
    sugimori 2012/09/03
    わかったような。わからないような。
  • ぼくにもわかるデザインパターン 第2章 GoFパターン大カタログ ~パターンがみるみる頭にしみこむ~ | ウルシステムズ株式会社

    GoFパターンカタログ章では,GoFに紹介されている23パターン(表1)すべてをカタログにして紹介します。クラス図と適用例に示したJDKのソースなどを参考にして,GoFのデザインパターンの基概念を確認していきましょう。それでは,次からさっそく始まりです。 Abstract Factory:ハイグレード車用部品とローグレード車用部品を作る下請け工場たとえば自動車メーカTOYATAは,人気車種カラーラを生産しています。カラーラには2 000ccエンジン,皮シート使用のハイグレード仕様と,1 800ccエンジン,布シートのローグレード仕様の2車種あります。いずれの部品も,製造はすべて下請けの勝どき機械に任せており,TOYATAは勝どき機械が作った部品を組み立てて製品にし,販売しています。勝どき機械には,TOYATAから「ローグレード車種何台分の部品」のように発注がくるため,管理のしやすさ

    ぼくにもわかるデザインパターン 第2章 GoFパターン大カタログ ~パターンがみるみる頭にしみこむ~ | ウルシステムズ株式会社
  • ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ

    先日twitterで "Expression Problem" という問題を知った。 静的な型付けの下で、場合分けのデータ構造に対して、新しい場合分けとその場合に対する新しい処理を、元のソースコードに手を加えることなく拡張定義すること 2009-05-16 この問題が意図するところを語るにはまずオブジェクト指向から流れを辿らねばなるまい。 オブジェクト指向のポリモーフィズム Javaのようなオブジェクト指向の言語で、ある特定のメソッドがあることを抽象クラスHogeで保証するとしよう。 public interface Hoge { void hoge(); } このとき、機能性、つまりメソッドというのは増えることがない固定のものだが、継承して実装されたクラスというのは自由に増やすことができる。そして、抽象型Hogeを扱っている既存コードは修正する必要がない。 これはいわゆる開放/閉鎖原則(

    ジェネリクスによるVisitorパターン拡張の考察 - プログラマーの脳みそ
    sugimori
    sugimori 2012/08/22
    Genericsで考え方が変わるんだなー
  • - Open-Closed Principle とデザインパターン

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

    - Open-Closed Principle とデザインパターン
    sugimori
    sugimori 2012/07/12
    なるほど。そういう観点でオブジェクト指向を考えてなかったなー。
  • PHPによるデザインパターン入門 - Do You PHP?

    PHPによるデザインパターン入門 秀和システムから発売となった「PHPによるデザインパターン入門」(ISBN4-7980-1516-4・ 2006/11/23発売)を執筆しました(共著です)。 「PHPを使ってGoFパターンを見ていこう」的な書籍になっています。GoFパターンについては、それぞれパターンの説明とサンプルコードという構成です。サンプルコードは、CentOS4.4/Windows XP(SP2)+PHP5.1.x/5.2.0で動作確認しています。 目次は以下の通りです。 1章 デザインパターンの世界へようこそ デザインパターンって何? デザインパターンとは? オブジェクト指向 GoFパターン デザインパターンのメリット・デメリット デザインパターンを使うメリット デザインパターンを使うデメリット PHPとオブジェクト指向 PHPとは? PHP5でのオブジェクト指向開発 2章

    PHPによるデザインパターン入門 - Do You PHP?
    sugimori
    sugimori 2012/05/18
    絶版になった本の原稿を公開してくれるなんて素晴らしい!今なら読める
  • UX/UIデザインガイドライン : 小野和俊のブログ

    このところ、アプレッソの中でも、MIJS製品技術委員会でも、自分たちのソフトウェアのUX/UIをブラッシュアップしていくためにどんなことができるのかをディスカッションしている。 UX/UIデザインガイドラインとして各社の推奨する指針をまとめたものがWebで公開されているので、プログラマーであれデザイナーであれ、ソフトウェアの画面設計に何らかの形で携わるのであれば、基礎知識として主要なものには目を通し、プログラマーがデザインパターンの用語で手短にコミュニケーションが取れるのと同じように、「ここは○○ガイドラインの△△パターンを使うのはどうかな?」というような会話ができるようにしていきたいと思っている。 ■ Apple ・アップル ヒューマンインターフェースガイドライン ・iOSヒューマンインターフェースガイドライン(PDF) ・iPadヒューマンインターフェースガイドライン(PDF) ■ M

    UX/UIデザインガイドライン : 小野和俊のブログ
    sugimori
    sugimori 2012/04/14
    UXというかUIガイドだよね。
  • ドメイン駆動設計入門 - Digital Romanticism

    "Beautiful Develpment"(10/27 DevLOVE)の講演資料と原稿 はじめに 日(10/27)、DevLOVE様主催で、"Beautiful Develoment"と題されたイベントが開催されました。これは「ドメイン駆動設計("DDD:Domain-Driven Design")」を題材に、入門から実践までを語り尽くすというコンセプトのものです。このイベントにおける講演のトップバッターとして、ドメイン駆動設計の根底にある基的な考え方についてお話しさせて頂きましたので、講演資料と原稿を公開いたします*1。 スライドはこちら アジェンダは以下の通りです。 導入 オブジェクトとは? モデルとは? ドメイン駆動設計とは? まずは、ドメイン駆動設計のベースとなっている、「オブジェクト指向」や「モデル」について整理した上で、実際にドメイン駆動設計とはどういうものかを見ていき

    ドメイン駆動設計入門 - Digital Romanticism
    sugimori
    sugimori 2011/07/21
    マスターしたい!
  • matarillo.com: UIパターン

    UIパターン 追記 この記事の一部を加筆・修正したものを「開発者が知っておくべき、6つのUIアーキテクチャ・パターン」として@ITに転載しています。 MVVMを追加した上で、アプリケーションモデルとMVVMをプレゼンテーションモデルのバリエーションとして位置づけました。 MVPの2つのスタイルとして、監視コントローラとパッシブ・ビューを説明しました。 まえがき Martin Fowlerの"GUI Architectures"を訳したので公開しようと思ったのだが、FAQページに「EAA developmentとかDSLなんかは商業出版するんで例外ってことで」と書いてある。面倒だったので翻訳の公開はやめて、「自分の理解を書く」というスタイルにしようと思う。 Fowler氏が説明しているのは 「フォームとコントロール」、「モデルビューコントローラー (MVC)」、「プレゼンテーションモデル」、

    sugimori
    sugimori 2011/05/19
    ちゃんと理解したい。
  • 1