タグ

design_patternに関するpipeheadのブックマーク (42)

  • State パターン - Wikipedia

    UMLによるStateパターン[1][2] Lepus3(英語版)によるStateパターン[2][3] State パターン(英: state pattern、ステート・パターン)とは、プログラミングで用いられる振る舞いに関する(英語版) デザインパターンの一種である。このパターンはオブジェクトの状態(state)を表現するために用いられる。ランタイムでそのタイプを部分的に変化させるオブジェクトを扱うクリーンな手段となる[1]:395。 擬似コードによる例[編集] ドローソフトを例に取る。このプログラムは任意の時点においてさまざまなツールのうちの1つとして振る舞うマウスカーソルを持つ。複数のカーソルオブジェクトを切り替える代わりに、カーソルは現在使用されているツールを表す内部的な状態を保持する。(例えばマウスクリックの結果として)ツールに依存するメソッドが呼ばれると、メソッド呼び出しはカー

    State パターン - Wikipedia
  • fam.cx

    This domain may be for sale!

    pipehead
    pipehead 2010/09/16
    クラスの線形化
  • Multitonっていうデザインパターンがあるらしい

    pipehead
    pipehead 2010/07/31
    > Multitonは「そのクラスのインスタンスを配列内にkey:valueの形で保持し、そのペアのインスタンスが1つしか生成されないことを保証する」というものらしい。
  • ストラテジーパターンとは デザインパターンの原則 | EC-CUBEな日々

    オブジェクト指向の特徴として、再利用性がある。 クラスを継承してサブクラスにメソッドを追加したり、親クラスのメソッドをオーバーライドして使うことににより、親クラスの機能をそのまま、再利用できるため、開発効率が高まる。 この考えはオブジェクト指向の再利用性における、非常に優れた一面である。 しかしながら、デメリットも存在する。 それは、親クラスを修正した場合、その修正は同時にその親クラスを継承した子クラスにも影響範囲が波及する。 ここに一つの真実が隠されている。 継承は親クラスと子クラス間の結合度強くなってしまうため、再利用性は高まるが、保守性、柔軟性は低下してしまうのである。 ここで、再利用性を高めながら、保守性、柔軟性を高めるデザインパターンが存在する。 それがStrategyパターンである。 このパターンは、ある振舞い(メソッド)を各子クラスで動的に変更したい場合に有効な手段である。

  • Stateパターンのどこがすごいのか、感心されたので、書いてみる - ウィリアムのいたずらの、まちあるき、たべあるき

    デザインパターンで状態を示すStateパターンっていうのがある。 これを説明して、「Stateパターン、すげー(@_@!)」 って感心されたんで、書いておいて見る。 ■そもそも、Stateパターンとは? 状態を示す(抽象的な)スーパークラスStateをつくり、 (具体的な)各状態は、それを継承した、各状態クラスを作ります。 例:Stateクラスには、executeがある

    Stateパターンのどこがすごいのか、感心されたので、書いてみる - ウィリアムのいたずらの、まちあるき、たべあるき
  • StateパターンとStrategyパターンは何が違うのか考える | Tricorn Tech Labs

    最近、物欲に目覚めてしまってAmazonでいろいろ買ってたら、今月の請求が7万を超えて素に戻ってしまった戸田です。 ちょっとbluetoothデバイスに凝り始めてしまって…。(汗) さて、オブジェクト指向設計のバイブルと言えば、いわずと知れたGoF(オブジェクト指向における再利用のためのデザインパターン、Erich Gamma, Ralph Johnson, Richard Helm, John Vlissides著、ソフトバンククリエイティブ刊)です。 ここで紹介されている23のパターンはどれも小手先のテクニックではなく、エッセンスが抽出されており応用範囲が広いものばかりです。 なによりも今まで暗黙知になりがちな、設計の定石・パターンに共通の名称(言語)を与えて、名称による概念の共有ができるようになったという功績は計り知れません。 もちろん、KREISELにおいてもこれらのパターンを活

    StateパターンとStrategyパターンは何が違うのか考える | Tricorn Tech Labs
  • Strategy パターン - Wikipedia

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

    Strategy パターン - Wikipedia
  • 時間城年代記:メタクラスで遊ぶ(2)

    実は前回は、メタクラス(カスタムメタクラス)で一番力を発揮する__new__メソッドの話と、__call__メソッドの話をわざと省いた。 いや、えらそうなコトを言っておきながら、自分でも少し混乱していたので、こっそりと色々試していたのだ。 で、確認終了したので、ここにまとめる。 (2007.3.2修正しました) ■__new__メソッドについて メタクラスの話に入る前に、確認を兼ねて__new__組み込みメソッドについて。 Pythonでクラスを定義する場合は、__init__メソッドで初期化するのが普通だが、生成過程を制御したい場合には、__new__組み込みメソッドを使用する。 __new__は、__init__と全く同様に引数を設定し、クラスオブジェクトの関数呼び出しの形で使用される。 ただし、二点ほど注意することがある。 一点は「戻り値を設定しない」__init__とは異なり、__

    pipehead
    pipehead 2008/02/27
    __new__() について, メタクラスで Singleton
  • Pythonでシングルトンを実装できたー! - kuenishi's blog

    (ほとんど写経なんだけど)とにかくできたー!と思って、調べてみたら山のように実装があって、ま、そんなもんかと思い直す。 class Singleton_(object): '''singleton pattern implementation reffered from thread http://www.python.jp/pipermail/python-ml-jp/2002-November/002075.html , thanks! usage: inherit Singleton and call Inheretee.instance()''' instance_ = None def __new__(cls): if cls.instance_ is None: cls.stat = [] cls.instance_ = object.__new__(cls) return c

    Pythonでシングルトンを実装できたー! - kuenishi's blog
  • Observer パターン - Wikipedia

    この記事には複数の問題があります。改善やノートページでの議論にご協力ください。 出典がまったく示されていないか不十分です。内容に関する文献や情報源が必要です。(2015年10月) 脚注による出典や参考文献の参照が不十分です。脚注を追加してください。(2021年8月) 出典検索?: "Observer パターン" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL この記事内にあるすべての画像は、ベクターイメージである SVG ファイルとして再作成されるべきです。これにはいくつかの利点があります。詳しくはWikipedia:SVGへの乗り換えを参照してください。この画像の SVG 形式がすでに利用可能である場合は、アップロードしてください。アップロード後、この画像にあるこのテンプレートを{{SVG版利用可能

    Observer パターン - Wikipedia
  • Facade パターン - Wikipedia

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

    Facade パターン - Wikipedia
    pipehead
    pipehead 2007/02/25
    facade pattern, façade pattern
  • Flyweight パターン - Wikipedia

    Flyweight パターン(フライウェイト・パターン)とは、GoFによって定義されたデザインパターンの1つである。等価なインスタンスを別々の箇所で使用する際に、一つのインスタンスを再利用することによって計算資源の浪費を減らすことを目的とする。なお、flyweightとは、英語で「フライ級」を意味し、ボクシングにおける体重別階級の1つである。 クラス図[編集] Flyweight パターンのクラス図を以下に挙げる。 FlyweightFactory クラスは Flyweight インスタンスのコンテナをフィールドとして持ち、Flyweight オブジェクトを返すメソッド getFlyweight() を実装する。 概要[編集] Flyweight パターンで設計された API では、利用者は Flyweight クラスにあたるインスタンスを取得する場合に、直接そのクラスのコンストラクタを呼

    Flyweight パターン - Wikipedia
    pipehead
    pipehead 2007/01/19
    /* flyweight pattern */ > Flyweight パターンを採用すべき典型的な例は、不変なクラスを扱う場合である。不変なクラスとはインスタンスが生成された後にそのインスタンスの状態が変化しないようなクラス
  • Factory Method パターン - Wikipedia

    Factory Method パターン(ファクトリメソッド・パターン)[1]とは、GoF (Gang of Four; 四人組)によって定義されたデザインパターンの1つである。 Factory Method パターンは、他のクラスのコンストラクタをサブクラスで上書き可能な自分のメソッドに置き換えることで、 アプリケーションに特化したオブジェクトの生成をサブクラスに追い出し、クラスの再利用性を高めることを目的とする。 Virtual Constructor パターンとも呼ばれる[1]。 クラス図[編集] Factory Method パターンのクラス図は以下の通りである。 抽象クラス Creator は 抽象クラス Product を生成するメソッドを持つ。 クラス ConcreteCreator は Creator の具象クラスであり、ConcreteProduct を生成するメソッドを持

    Factory Method パターン - Wikipedia
    pipehead
    pipehead 2006/12/15
    factory method pattern
  • Template Method パターン - Wikipedia

    Template Method パターン(テンプレート・メソッド・パターン)とは、GoF (Gang of Four; 4人組) によって定義されたデザインパターンの1つである。「振る舞いに関するパターン」に属する。Template Method パターンの目的は、ある処理のおおまかなアルゴリズムをあらかじめ決めておいて、そのアルゴリズムの具体的な設計をサブクラスに任せることである。そのため、システムのフレームワークを構築するための手段としてよく活用される。 クラス図[編集] 以下に Template Method パターンのクラス図を挙げる。 AbstractClass は、public で宣言された templateMethod() と protected で宣言されたいくつかの抽象メソッドを持つ。ConcreteClass は AbstractClass を継承し、AbstractC

    Template Method パターン - Wikipedia
    pipehead
    pipehead 2006/12/14
    template method pattern
  • Python で Singleton/シングルトン パターン « (有)サウンドボード公式ブログ メンバーによるIT関連何でも技術情報メモ

    PythonでSingletonパターンを実現する方法. class Singleton(type): def __init__(self, *args): type.__init__(self, *args) self._instance = None def __call__(self, *args): if self._instance is None : self._instance = type.__call__(self, *args) return self._instance ここで見つけました.http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/412551 Python Cookbook のサイトを探すと幾つか見つかりますが,このコードが一番気に入ったのでこれを利用しています. RDBへのコネクションを管理する

    pipehead
    pipehead 2006/12/12
    メタクラスで Singleton
  • Singleton パターン - Wikipedia

    Singleton パターン(シングルトン・パターン)とは、オブジェクト指向のコンピュータプログラムにおける、デザインパターンの1つである。GoF (Gang of Four; 4人のギャングたち) によって定義された。Singleton パターンとは、そのクラスのインスタンスが1つしか生成されないことを保証するデザインパターンのことである。ロケールやルック・アンド・フィールなど、絶対にアプリケーション全体で統一しなければならない仕組みの実装に使用される[1]。 クラス図[編集] Singleton パターンの一般的なクラス図を示す。 Singleton は同じ型のインスタンスを private なクラス変数として持つ。この変数には Singleton.getInstance() からアクセスする。Singleton のコンストラクタは private である。 このクラス図で注目すべきこ

    Singleton パターン - Wikipedia
    pipehead
    pipehead 2006/11/19
    singleton pattern; Multiton パターン
  • 矢沢久雄の早わかりGoFデザインパターン(8) | 日経 xTECH(クロステック)

    23種類のGoFデザインパターンには、それぞれ親しみやすい名前が付けられています。今回紹介する2つのパターンの名前を直訳すると、「橋(Bridge)」および「装飾者(Decorator)」となります。どちらも構造に関するパターンに分類されているので、構造として橋を架けたような工夫、そして構造に飾りを付ける工夫であることが予測できます。オブジェクト指向プログラミングにおける橋と飾りとは、いったい何なんだろう...興味が湧いてきたところで題に入りましょう。 【お役立ち度】★★★★★ ●拡張から実装に橋を架けるBridgeパターン 継承元のクラスをスーパークラスと呼び、継承先のクラスをサブクラスと呼びます。サブクラスの役割には、スーパークラスの抽象メソッドを適切に実装することと、スーパークラスの機能を拡張することがあります。 ここで、引数に与えられたデータを描画するdrawメソッド(抽象メソッ

    矢沢久雄の早わかりGoFデザインパターン(8) | 日経 xTECH(クロステック)
    pipehead
    pipehead 2006/01/16
    Bridge パターン, Decorator パターン
  • 矢沢久雄の早わかりGoFデザインパターン(7)

    親父の小言のように何度も同じ話をして恐縮ですが、とても大事なことなので聞いてください。GoFの23種類のデザインパターンは、生成に関するパターン、構造に関するパターン、振る舞いに関するパターンの3つに分類されています。このことから、オブジェクト指向プログラミングを上手に実践するには、生成、構造、振る舞いに関する工夫をすればよいことがわかります。GoFデザインパターンは、工夫のお手集なのです。 個々のデザインパターンの質(何が便利なのか)を見抜くコツは、どの分類に属しているかを確認することです。今回紹介するSingletonパターンは生成に関するパターンに分類され、Flyweightパターンは構造に関するパターンに分類されています。すなわち、オブジェクトの生成に関する工夫と、プログラムの構造に関する工夫です。 【お役立ち度】★★★☆☆ ●オブジェクトを1つだけしか生成させないSingle

    矢沢久雄の早わかりGoFデザインパターン(7)
    pipehead
    pipehead 2006/01/09
    Singleton パターン, Flyweight パターン
  • 最速インターフェース研究会 :: JavaScriptのデザインパターン - Singleton

    JavaScriptじゃねえと書けねえよ、ってやり方でデザインパターンを実装してみるコーナー。とはいってもデザインパターンとか良くわからないので適当に覚えながら作る。 間違ってる箇所あったらつっこんでくれるとありがたいです。 わかりやすい文章を書く能力が欠如してるのでデザインパターンって何だとかそういうのはこっち参照。 http://d.hatena.ne.jp/naoya/20050813/1123924312 JavaScriptのコンストラクタはPerl同様自在に定義できます。returnでobjectを返してやれば、newの結果としてそいつを使います。 普通にシングルトンなクラスを実装するにはこんな感じだと思います。 function Singleton(){ var self = arguments.callee; if(self.instance == null){ this.

  • 実践デザパタ-その12:Strategyパターン - それはBooks

    デザインパターンとは、システム設計におけるクラスやインターフェースの関係に名前をつけたものです。 GoFの23のパターンが有名です。デザインパターンというのは、どんなパターンなのか、パターンの目的は何かということを覚えることが非常に重要なのですが、これを実際に適用しようとした場合に、いつ適用していいかが見えてこないとお話になりません。 そこで、自分の勉強も兼ねつつ、パターンの実践時における使用場所や、パターンを適用するきっかけを見つけられるようにメモしておきます。 12番目は処理手順やアルゴリズムをスムーズに交換できるようにするStrategyパターンのメモです。 Strategyパターンは、実行時に処理のアルゴリズムを決定したいときに使うパターンです。 処理のアルゴリズムとは、例えばソートの方法であったり、数値の計算の仕方であったりします。 1つ目のアルゴリズムを使うと計算は速いがメモリ

    実践デザパタ-その12:Strategyパターン - それはBooks
    pipehead
    pipehead 2004/06/19
    > Strategyパターンと同じ実装方法で同じクラス図になるパターンに、Stateパターンというのがあります。このパターンは、インスタンスの状態を動的に変更したい場合に使うものです。Strategyパターンとは概念が違います。