タグ

programmingと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パターンである。 このパターンは、ある振舞い(メソッド)を各子クラスで動的に変更したい場合に有効な手段である。

  • gooサービス終了のお知らせ | dメニュー

    ニュース、占い、アプリ、音楽、動画、書籍など「スマホ・ライフ」を楽しむための情報を無料でお届けします。 今後は、dメニューをご利用くださいますよう、よろしくお願いいたします。

    gooサービス終了のお知らせ | dメニュー
  • 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 パターン(ストラテジーパターン)は、アルゴリズムを共通のインターフェースを持つ独立したクラスとして定義し、実行時に交換可能にすることで、処理内容の変更を利用側のコードから独立させるデザインパターンである。これにより、複数のアルゴリズムを状況に応じて切り替えながら、利用側の構造を変更せずに拡張や保守を行えるようになる。 package org.wikipedia.patterns.strategy; // MainApp test application class MainApp { public static void main(String[] args) { Context context; // 異なるアルゴリズムに従う3つのコンテキスト。 context = new Context(new ConcreteStrategyA()); context.execut

    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版利用可能|新しい画像ファイル名.svg}}テンプレートと置き換えてください。 Obser

    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 クラスにあたるインスタンスを取得する場合に、直接そのクラスのコンストラクタを呼び出す代わりに Flyweigh

    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 を生成するメソッドを持つ。 Concre

    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 を継承し、AbstractClass で定義さ

    Template Method パターン - Wikipedia
    pipehead
    pipehead 2006/12/14
    template method pattern
  • 技術情報メモ « WordPressのホームページ制作 東京都杉並区 サウンドボード

    数年放置していた公式ブログ(旧)を取り込み復活させました(笑い) かなり古い情報もありますので、利用される際はご注意くださいませ。 SEO・SEM対策的な意味もありそのままのドメインではなく、新ホームページ内でやっていこうかと。 もっともいつまた放置が始まるかわかりませんが…

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

    Singleton パターン(シングルトン・パターン)とは、オブジェクト指向プログラミングにおける設計パターンの一つで、クラスのインスタンスが一つだけ生成されることを保証し、そのインスタンスをプログラム全体で共有して利用できるようにする設計手法である。 主に、アプリケーション内で共有される設定や資源を一元的に管理し、複数生成による競合や状態の不整合を防ぐために用いられ、この考え方は1994年に出版された設計パターン集において体系化された[1]。 Singleton パターンの一般的なクラス図を示す。 Singleton は同じ型のインスタンスを private なクラス変数として持つ。この変数には Singleton.getInstance() からアクセスする。Singleton のコンストラクタは private である。 このクラス図で注目すべきことは以下の3点である。 同じ型のイン

    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パターンとは概念が違います。