[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

oopに関するkadoppeのブックマーク (33)

  • 23.Interpreter パターン

    2012/04/26 一部修正しました デザインパターン 23章 Interpreter パターン 23.1 Interpreterパターンとは 23.2 サンプルケース 23.3 Interpreterパターンまとめ 23.1 Interpreter パターンとは 第23章では Interpreter パターンを学びます。Interpreter とは、英語で「解釈者・説明者」を意味する単語です。 何らかのフォーマットで書かれたファイルの中身を、解析した結果に則って何らかの処理を行いたい場合があります。 Interpreter パターンとは、このような「解析した結果」得られた手順に則った処理を実現するために最適なパターンです。 1 + 2 × ( 4 + 2 ) という計算式を処理する場合を考えて見ましょう。まずは、処理を解析すると、以下のような構文木が得られます。 このような構文木に則っ

  • 22.Commandパターン

    2012/04/26 一部修正しました デザインパターン 22章 Commandパターン 22.1 Commandパターンとは 22.2 サンプルケース 22.3 Commandパターンまとめ 22.1 Commandパターンとは 第22章ではCommandパターンを学びます。あるオブジェクトに対して要求を送るということは、そのオブジェクトのメソッドを呼び出すことと同じです。 そして、メソッドにどのような引数を渡すか、ということによって要求の内容は表現されます。さまざまな要求を送ろうとすると、引数の数や種類を増やさなければなりませんが、 それには限界があります。そこで要求自体をオブジェクトにしてしまい、そのオブジェクトを引数に渡すようにします。それがCommandパターンです。 Commandパターンは、要求をCommandオブジェクトにして、それらを複数組み合わせて使えるようにするパター

  • 21.Proxyパターン

    2.1 Proxyパターンとは 第21章ではProxyパターンを学びます。Proxyとは「代理人」という意味です。現実世界で代理人というと、弁護士や税理士など人ができない仕事をするというイメージがありますが、Proxyパターンにおける代理人オブジェクトは、人でなくてもできるような処理を任されます。そして代理人オブジェクトでできない処理は人オブジェクトが引き受け、処理します。 Proxyパターンは、要求を代理人オブジェクトが受け取って処理するパターンです。 21.2 サンプルケース 今日は、新人の藤原さんが担任の山田先生の代わりに授業を行うことになりました。

  • 20.Flyweight パターン

    2012/04/26 一部修正しました デザインパターン 20章 Flyweightパターン 20.1 Flyweightパターンとは 20.2 サンプルケース 20.3 Flyweightパターンまとめ 20.1 Flyweight パターンとは 第20章では Flyweight パターンを学びます。Flyweight とは、英語で「フライ級」を意味する単語です。 フライ級とは、ボクシングなどの体重階級の中でもっとも軽い部類に分類できる階級です。もっと軽い階級もありますが。 Flyweight パターンとは、インスタンスを共有することでリソースを無駄なく使うことに焦点を当てたパターンです。 例えば、ホームページの背景に使う小さな画像は、背景で表示される回数分ネットワークごしにやり取りされるわけではありません。 普通は、画像を一回取得し、「その画像」を並べて表示するわけです。 Flywei

  • 19.State パターン

    19.1 State パターンとは 第19章では State パターンを学びます。State とは、英語で「状態」を意味する単語です。 オブジェクト指向設計では、モノをクラスとして表現することが多くあります。State パターンとは、 モノではなく、「状態」をクラスとして表現するパターンです。 状態によって、動作のパターンが変わることがよくあります。 例えば、「機嫌のいい状態」「機嫌が悪い状態」の2つの状態があるお母さんにいくつか頼みごとをすることを考えます。 機嫌のいい状態のお母さんに「お小遣い頂戴」「おやつ頂戴」などのお願いをした場合、 「はいはい」といってお小遣いをくれたり、おやつを出してくれたりするでしょう。 しかし、機嫌の悪い状態のお母さんにこれらのお願いをしても聞き入れてくれないかもしれません。 お母さんは状態によって、振る舞いが変わるわけです。 State パターンとは、この

  • 18.Memento パターン

    2012/04/26 一部修正しました デザインパターン 18章 Mementoパターン 18.1 Mementoパターンとは 18.2 サンプルケース 18.3 Mementoパターンまとめ 18.1 Memento パターンとは 第18章では Memento パターンを学びます。Memento とは、英語で「記念品」「形見」を意味する単語です。 記念品や形見を見ると、当時の状況が思い出されます。Memento パターンとは、 インスタンスのあるときの状態をスナップショットとして保存しておくことで、 その時のインスタンスの状態を復元することを可能にするものです。 インスタンスの状態が、プログラム実行中にどんどん変化することが考えられます。 一度変化してしまったインスタンスを、「少し前の状態に戻したい」「ある時点の状態に戻したい」などの要求は時に発生するものです。 このような要求にスマート

  • 17.Observer パターン

    2012/04/26 一部修正しました デザインパターン 17章 Observerパターン 17.1 Observerパターンとは 17.2 サンプルケース 17.3 Observerパターンまとめ 17.1 Observer パターンとは 第17章では Observer パターンを学びます。Observer とは、英語で「観察者」を意味する単語です。Observer パターンとは、状態の変化を観察することを目的としたものですが、どちらかというと「観察」よりも「通知」に重点の置かれたものになっています。 あるインスタンスの状態が変化した際に、そのインスタンス自身が、「観察者」に状態の変化を「通知」する仕組みです。例えば、飛行機の搭乗券について考えて見ましょう。飛行機の搭乗券を購入した人がキャンセルする必要に駆られた場合、航空会社に連絡してキャンセルする旨を伝えます。各搭乗者を管理しているの

  • 16.Mediator パターン

    2012/04/26 一部修正しました デザインパターン 16章 Mediatorパターン 16.1 Mediatorパターンとは 16.2 サンプルケース 16.3 Mediatorパターンまとめ 16.1 Mediator パターンとは 第16章では Mediator パターンを学びます。 Mediator とは、英語で「仲裁人、調停者」を意味する単語です。 Mediator パターンとは、多数のオブジェクトの間の調整を行いながら処理をすすめる必要が ある場合に利用すると威力を発揮するパターンです。 例えば、車どおりの多い交差点で信号が壊れた時に、警官が交通整備をしないとどうなるでしょう? それぞれの車が、めいめい判断し、行けると思ったら進む。こんな状態で、 信号の故障をうまく乗り切ることができるでしょうか?おそらく無理でしょう。 いくら皆が一生懸命周囲の状況を確認しても、全員が同じ認

  • 15.Facadeパターン

    15.1 Facadeパターンとは 第15章ではFacadeパターンを学びます。プログラムを作っていくと、最初は小さなものでも、だんだん大きくなっていきます。 たくさんのクラスが出来て、相互に関係しあい、複雑になっていきます。 クラスを使う場合には、それらの関係を正しく理解して、 正しい順番にメソッドを呼び出す必要があります。 大きなプログラムを使って処理を行う場合、 関係しあっているたくさんのクラスを適切に制御しなくてはいけません。 その処理を行うための「窓口」を用意しておくと、 個別にたくさんのクラスを制御しなくても、「窓口」に対して、要求するだけですみます。 Facadeパターンは、既存のクラスを複数組み合わせて使う手順を、「窓口」となるクラスを作ってシンプルに利用できるようにするパターンです。 ちなみに、facadeとはフランス語を語源とする単語で「建物の正面」という意味です。発音

  • 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 パターンとは、「責任」を負ったものが、「鎖」状につながれた状態をイメージさせるパターンです。 例えば、何かの決済を「課長」にお願いすると、課長決裁で対応できるものであれば、課長が決裁します。しかし、

  • 12. Decorator パターン

    2012/04/26 一部修正しました デザインパターン 12章 Decorator パターン 12.1 Decorator パターンとは 12.2 サンプルケース 12.3 Decoratorパターン まとめ 12.1 Decorator パターンとは 第12章では、Decorator パターンを学びます。Decorate とは、英語で「装飾者」を意味する言葉です。Decorator パターンでは、飾り枠と中身を同一視することで、より柔軟な機能拡張方法を提供します。 Decoratorパターンは機能を一つひとつかぶせていくイメージになります。ある機能を持ったDecorationをコアとなるものにかぶせていくイメージです。 12.2 サンプルケース サンプルケースでは、アイスクリームの話をしたいと思います。アイスクリーム屋さんでは、自由にトッピングを選べるようになっています。お客さんは、ト

  • 11. Composite パターン

    2012/04/26 一部修正しました デザインパターン 11章 Composite パターン 11.1 Composite パターンとは 11.2 サンプルケース 11.3 Composite パターンまとめ 11.1 Composite パターンとは 第11章では、Composite パターンを学びます。Composite とは、英語で「複合物」を意味する言葉です。 Composite パターンは、「容器と中身を同一視する」ことで、再帰的な構造の取り扱いを容易にするものです。 「容器と中身を同一視する」必要が生じる例として、ファイルシステムなどが挙げられます。 あるフォルダ以下のファイルやフォルダをすべて削除したい場合など、それがファイルなのかフォルダなのかを意識せずに、同じように削除できたほうが都合が良いでしょう。 11.2 サンプルケース サンプルケースでは、ディレクトリとファイル

  • 10. Strategy パターン

    2012/04/26 一部修正しました デザインパターン 10章 Strategy パターン 10.1 Strategy パターンとは 10.2 サンプルケース 10.3 Strategyパターンまとめ 10.1 Strategy パターンとは 第10章では、Strategy パターンを学びます。Strategy とは英語で「戦略」を意味する言葉です。Strategy パターンを利用することで、戦略の切り替えや追加が簡単に行えるようになります。 普通にプログラミングしていると、メソッドの中に溶け込んだ形でアルゴリズムを実装してしまうことがよくあります。if 文などで分岐させることでアルゴリズムを変更するような方法です。Strategy パターンでは、戦略の部分を意識して別クラスとして作成するようにしています。戦略x部分を別クラスとして作成しておき、戦略を変更したい場合には、利用する戦略クラ

  • 9. Bridge パターン

    9.1 Bridge パターンとは 第9章では Bridge パターンを学びます。Bridgeパターンとは、「Bridge」すなわち「橋」の役割を果たすパターンです。Bridgeパターンを利用することで、機能と実装を分離して、それぞれを独立に拡張することができるようになります。 例えば、ある methodA というメソッドを持つクラス MyClassA は、methodA メソッドの実装が異なる MyClassASub1、MyClassASub2 という2つのクラスによって継承されているとします。このとき、MyClassA にmethodB というメソッドを追加するために、MyClassB クラスという MyClassA を継承するクラスを作成したことを考えてください。 このとき、MyClassB でも、MyClassASub1、MyClassASub2 で実装している methodA と

  • 8. AbstractFactory パターン

    2012/04/26 一部修正しました デザインパターン 8章 AbstractFactory パターン 8.1 AbstractFactoryパターンとは 8.2 サンプルケース 8.3 AbstractFactory パターンのまとめ 8.1 AbstractFactoryパターンとは 第8章では、 AbstractFactory パターンを学びます。AbstractFactory を日語に直訳すると「抽象的な工場」となります。いったい抽象的な工場とは、どんな工場なのでしょう。AbstractFactory パターンとは、インスタンスの生成を専門に行うクラスを用意することで、整合性を必要とされる一連のオブジェクト群を間違いなく生成するためのパターンです。 例えば、「車」を作成するプログラムを考えてみてください。このプログラムのある部分で、「車」オブジェクトである変数 car にタイヤ

  • 7. Builder パターン

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

  • 6. Prototype パターン

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

  • 5. Singleton パターン

    5.1 Singleton パターンとは 第5章では Singleton パターンを紹介します。singleton とは一枚札のことです。一枚札とはトランプの一組に唯一のカードです。Singleton パターンとは、このような唯一の存在を保証するためのパターンです。 あるクラスのインスタンスが一つしかないことを保証したい場合があります。注意深く設計すれば、唯一のインスタンスを使いまわすことは可能でしょうが、このインスタンスが唯一であることを保障するものとはなりません。このような場合に、威力を発揮するのが Singleton パターンです。 Singleton パターンは、コンストラクタを private とすることで、他クラスから新たにインスタンスが生成されないような構造とすることで、インスタンスの生成を制御します。まずは、サンプルケースを考えて見ましょう。 5.2 サンプルケース サンプ

  • 4. FactoryMethod パターン

    2012/04/26 一部修正しました デザインパターン 4章 FactoryMethod パターン 4.1 FactoryMethodパターンとは 4.2 サンプルケース 4.3 FactoryMethod パターンのまとめ 4.1 FactoryMethodパターンとは 第4章では、FactoryMethod パターンを紹介します。FactoryMethod パターンは、オブジェクトの生成方法に一工夫加えることで、より柔軟にオブジェクトを生成することを目的とするものです。FactoryMethod パターンでは、インスタンスの生成をサブクラスに行わせることで、より柔軟に生成するインスタンスを選択することが可能となります。 オブジェクトを生成する場合、下記のように記述するのが普通です。 Product product = new Product(); しかし、このようなオブジェクト生成方

  • 3.TemplateMethod パターン

    2012/04/26 一部修正しました デザインパターン 3章 TemplateMethod パターン 3.1 TemplateMethodパターンとは 3.2 サンプルケース 3.3 TemplateMethodパターンまとめ 3.1 TemplateMethodパターンとは 第3章では TemplateMethod パターンを紹介します。 template とは、文字の形に穴があいている薄いプラスチックの板のことです。その穴をペンでなぞると、手書きでも整った文字を書くことができます。しかし、マジックで書くのか、鉛筆で書くのか、それとも墨汁と筆を使ってみるのかということを考えてみると、実際にどのような文字になるのかはわかりません。template は、ただその形を決定する枠組みを提供するだけです。 TemplateMethod パターンは、テンプレートの機能を持つパターンです。スーパーク