タグ

OOPとgofに関するkiyo_hikoのブックマーク (32)

  • デザインパターンの自動化

    .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

    デザインパターンの自動化
  • 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パターンがあるという見方
  • syboos.jp

    kiyo_hiko
    kiyo_hiko 2012/11/16
    パターンや原則まとめ
  • VBAで継承に代わるもの | Code++

    Office 2003 のVBAでXMLからC/C++のヘッダファイルを生成するツールを作っているのですが、Office 2003 のVBAではいまだに VB .NET のようにクラスの継承が使えません(涙) しかし、継承が使えないVBAでも Decorator Pattern を使えばクラスに機能を追加することができます♪ VBAでDecorator Patternを使って実装するとき、こんな感じになるでしょうか… (ハンガリアン記法を使っていないと怒られそうですが 汗) ' SomeObjectクラスの実装 Sub DoSomething() ... ' 何かの処理 End Sub ... ' SomeObjectDecoratorクラスの実装 Implements SomeObject Public Delegate As New SomeObject ' 継承の代わりなので最初に作

    VBAで継承に代わるもの | Code++
    kiyo_hiko
    kiyo_hiko 2012/07/19
    VBAでGoF ごふっ / おれもがんばろう
  • サルでもわかる 逆引きデザインパターン 第2章 逆引きカタログ ロジック編 Factory/Factory Method(ファクトリ/ファクトリメソッド)

    イントロダクション オブジェクトを利用する側からすれば、使用する際にオブジェクトの詳細を意識したくはありませんよね。 たとえば、条件によってデータファイルの読み込みに使うオブジェクトが異なる場合、CSV形式であればCSVDataReaderオブジェクトを、XML形式であればXMLDataReaderオブジェクトを生成します。 通常はif、else、switchなどの条件分岐を使用して、条件ごとに生成するオブジェクトを変更します。 ここで新たなデータファイル形式への対応が必要になった場合は、新しいオブジェクト生成処理と、条件式を追加しなければいけません。 オブジェクトの使用者は、オブジェクトが使用できる状態で受け渡してもらい、オブジェクトは使うことだけに専念したいものです。 また、このようにオブジェクトの生成処理と使用処理が同じコードに書かれていた場合、オブジェクトの生成処理によってオブジェ

    kiyo_hiko
    kiyo_hiko 2012/06/04
    ファクトリーパターンの場合生産物は大工場の1部門が返してくるが、ファクトリーメソッドの場合は工場のサブクラスによって返ると 同じようなインスタンス生成が延々と続くモジュールを保守してるので使いたいのう
  • ActionScript入門Wiki - Decoratorパターン

    kiyo_hiko
    kiyo_hiko 2012/04/26
    トッピングの一番下に生地を置く
  • どういう場合にAUTOLOADを使用するか?...未解決 - end0tknr's kipple - web写経開発

    perlではAUTOLOADという仕組みがあります。 sub AUTOLOADが定義されていると、呼び出し対象のmethodがない場合にこれが呼ばれます。 #!perl #### in ActivePerl use strict; use warnings; my $animal = Animal->new(); $animal->hogehoge(); package Animal; sub new { my ($class) = @_; my $self = {}; return bless $self, $class; } sub AUTOLOAD { our $AUTOLOAD; warn "$AUTOLOAD can't find in ",__PACKAGE__,"\n"; } 1; このサンプルスクリプトを実行すると、次のように表示され、AUTOLOAD実行時の$AUTOLO

    どういう場合にAUTOLOADを使用するか?...未解決 - end0tknr's kipple - web写経開発
    kiyo_hiko
    kiyo_hiko 2012/04/26
    なるほど Decoratorで使うと良さげなのか。StateとかStrategyでも使えそうかしら PerlのOOPはよくわからない
  • C# Tips: interface を 抽象クラス (abstract class) とどう使い分けるか (プログラミング C# - 翔ソフトウェア (Sho's))

    # 久々に技術ネタを書いてみる。 # と言っても、某掲示板で使ったネタの使い回し。 C++ にはなかった新しいキーワードとして、C# では interface というものが出てくる。 interface は、Java ではおなじみのキーワードだ。 例. interface ICloneable { object Clone(); } interface では公開されているメソッドとプロパティの外見 (名前、パラメータ、戻り値) だけが宣言されていて、実装部分が定義されていない。実装部分は、その interface を実装するクラスによって定義される。 例. class Employee : ICloneable { private string name; public string Name { get { return name; } set { name = value; } } p

    kiyo_hiko
    kiyo_hiko 2012/04/17
    「実際の設計では、State/Strategyパターンを使おう→じゃinterface を使おうとはならない」 / ConcreteStrategyに状態を持たせるならAbstractStrategy書いて共通のフィールドは書いてしまうかな。それが設計としていいのかダメかは謎い
  • デザパタ140文字

    尾野(しっぽ) @tail_y 今なんとなくデザインパターンを見てたけど、どうしてこういう説明って、厳かで分りにくく書かれるんだろうね。噛み砕いて書くと、正確性に欠ける!って怒られるんかな。 2010-04-22 08:29:36 尾野(しっぽ) @tail_y いや、一番いけないのは、デザインパターン完全に理解しないで語るのは恥ずかしいとか、使いこなせないなら使っちゃ駄目とか、そういう雰囲気があるのがいけないんですよ!そんな高尚なものにしてしまうから、解説まで高尚になっちゃって、一部の天才だけのものになっちゃうんですよ。 2010-04-22 08:53:45

    デザパタ140文字
    kiyo_hiko
    kiyo_hiko 2012/04/12
    例えがよい あまり使わないパターンは忘れがちで…
  • Adapter Pattern

    kiyo_hiko
    kiyo_hiko 2012/03/15
    「Adapter Pattern and Strategy Pattern - We can simply replace the adapters objects at run time because they implements the same interface.」…何となく似てるとは思ってた。Strategyもインターフェースを一緒にするという意味で
  • Yohta's Object World ~YOHTAのオブジェクト指向研究 デザインパターン・UML などなど~

    Yohta's Object World Study of Design Pattern Mastering Unified Modeling Language. Study of Design Pattern デザインパターンの骸骨たち (RE-BONE ) with C デザインパターンにC言語版を追加! (2009.2.28) デザインパターンの塗り薬 Sample Application for GOF's Design Pattern COMMANDを追加!(2004.5.29) jjtree(JavaCC)で、Visitorパターンをマスター 第八回修正 (2011.12.29) Special Issue C++ビギナーに捧ぐ EffectiveC++入門 フレッシュマン特集(2005.03.16) AMIGO FOR Win32 (Win32プログラミングのお助けクラス達)

  • 7. Builder パターン

    7.1 Builder パターンとは 第7章では、Builder パターンを学びます。builder とは、建築者や建築業者などを意味する単語です。Builder パターンとは、同じ作成過程で異なる表現形式の結果を得るためのパターンです。 例えば、家を建てることを考えてみます。完成する家がどのような家になるかというのは「家の構築過程」と「素材」大きく2つの要素で決定されると考えてみてください。「作成過程」とは、「どのような順番で、どこに何を配置していくか」というようなことであり、「素材」とは、「柱には何を使って、壁には何を使って・・・」ということであると考えてください。 このとき、「作成過程」には、"平屋を建てるための作成過程" や "2階建ての家を建てるための作成過程"、または "少し変わった平屋を建てるための作成過程" など様々なものが考えられます。同様に、「素材」にも、"柱は木で、壁

    kiyo_hiko
    kiyo_hiko 2012/02/14
    最近作ってるのは小規模なアプリばかりなので直接ビルダークラスのメソッドをロジックから呼んでる事が多い
  • syboos.jp

    kiyo_hiko
    kiyo_hiko 2012/01/26
    活用シーンの例示があるのがいい感じ。マルチレベルアンドゥはまさにコマンドのスッタクといった感じかな
  • BROKEN's Advanced Vehicle Laboratory

    プロジェクト / 小型ヒューマノイド2003 for ROBO-ONE 4.3 基礎実験:ステートマシンという考え方 前の実験ではLEDが1秒ごとに点滅することでPICが正しく動作することを確認しました。ここでは、プログラムを設計する上で大変有効な、ステートマシンという考え方について説明します。 サンプルプログラムは、LEDの光らせ方を変えたものをステートマシンの考え方にのっとって作成してみました。 ステートマシン (state machine)とは 内部状態によって振る舞いが変化する仕組みをステートマシンといいます。たとえば、Aちゃんという子がいたとしましょう。Aちゃんは普段はどんな仕事を頼まれてもいやな顔をせず引き受けてテキパキとこなしますが、お昼近くになってお腹がすいてくると何を頼んでもやってくれません。お昼をべて空腹が満たされると、また普段のAちゃんにもどりますが、定時のチャイム

    kiyo_hiko
    kiyo_hiko 2011/12/08
    Stateパターンを図で表すとステートマシン図と状態遷移表になるわけか / 仕事でオブジェクト指向設計なんてやったこと無いので参考に。
  • Iterator Interface

    Iteratorインタフェースはコレクションの要素を先頭から1つづつ、シーケンシャルにアクセスするためのインタフェースです。GoFのデザインパターンのイテレータパターンに対応しており、その特徴は コレクションの内部表現を公開せずに、要素にアクセスできる ことにあります。このため、Iteratorインタフェースをインプリメントしたクラスやその要素数、要素の保持方法などによらずに統一したインタフェースで要素にアクセスすることができます。 Iteratorインタフェースなので、そのまま生成することはできません。生成にはCollectionインタフェースのiteratorメソッドを使用します。 CollectionインタフェースはListインタフェースやSetインタフェースのスーパーインタフェースなので、これらのインタフェースでも使用することができます。 コレクションのシーケンシャルアクセス It

    kiyo_hiko
    kiyo_hiko 2011/12/06
    Perlでシーケンシャルアクセスさせるためのクラスを発明するので参考に
  • 2011年度生物情報科学演習 リファクタリングとデザインパターン

    コードのリファクタリングとデザインパターン C++, Javaなどオブジェクト指向の考え方、クラスを上手に使うとコードをよみやすく整理できる場合が多くあります。 プログラムの動作を変えずにコードを整理することをリファクタリングと呼びます。 最初からコードを上手に設計するのは、熟練のプログラマでも難しいものです。少人数で開発する場合は、むしろ積極的にコードをリファクタリングし、アルゴリズムの見通しをよくするとよいでしょう。コードを修正する際にはversion管理ツールを使えるようにしておくと安心です。以前のソースコードの状態にいつでも戻せます。 ソースコードの版管理ツール Mercurialの使い方 http://www.xerial.org/wiki/lecture/2010/Mercurial デザインパターンに関しては、GoFや結城浩さんのなどを読むと理解はできると思いますが、

  • はてなブログ | 無料ブログを作成しよう

    わたし的棚ぼた一万円選書 急に千葉さんに手渡された封筒、開けてみたら1万円札が1枚。何ごとかと思えば、同期の出張を代わったお礼をもらったらしい。 「葵はワンオペで育児してくれたから」と半分わけてくれました。 泡銭の1万円 これはもう、わたし的1万円選書をしろという思し召しなのでは……

    はてなブログ | 無料ブログを作成しよう
    kiyo_hiko
    kiyo_hiko 2011/11/30
    クソワロタwwww
  • Strategy パターン - Wikipedia

    Strategy パターン(ストラテジー -)は、コンピュータープログラミングの領域において、アルゴリズムを実行時に選択することができるデザインパターンである。 Strategyパターンはアルゴリズムを記述するサブルーチンへの参照をデータ構造の内部に保持する。このパターンの実現には、関数ポインタや関数オブジェクト、デリゲートのほか、オーソドックスなオブジェクト指向言語におけるポリモーフィズムと委譲、あるいはリフレクションによる動的ダック・タイピングなどが利用される。 このパターンは、関数が第一級オブジェクトである言語では暗黙のうちに使用されている。例として後述のPythonコード例を参照のこと。 Strategy パターンは、アプリケーションで使用されるアルゴリズムを動的に切り替える必要がある際に有用である。Strategy パターンはアルゴリズムのセットを定義する方法を提供し、これらを交

    Strategy パターン - Wikipedia
    kiyo_hiko
    kiyo_hiko 2011/11/29
    「このパターンは、関数が第一級オブジェクトである言語では暗黙のうちに使用されている。例として Python コード を参照」・・・おお、見落としてた。コンストラクターに関数オブジェクトをバンバン渡してる感じ?