タグ

programmingとdesign_patternsに関するreppetsのブックマーク (4)

  • Visitorパターン

    ダブルディスパッチ Visitorパターンでは、データと処理を分けて、別々のクラスとして作る。そして、この2つのクラスが、互いに相手のメソッドを呼び出すことによって、連係して動作する。この仕組みをダブルディスパッチという。 具体的には、下記のようになっている。Acceptorインターフェースは、データを表す。処理を受け入れるもの、という意味で、Acceptorという名前になっている。Acceptor1, Acceptor2は、Acceptorインターフェースを実装したクラスである。Visitorクラスは、処理を表す。データを1つ1つ訪れて処理を行うもの、という意味で、Visitorという名前になっている。Visitor1は、具体的な処理を記述した、Visitorクラスのサブクラスである。 public interface Acceptor { public abstract void ac

  • Command パターンはやめよう - philosophical

    プログラミングの世界では Command パターンと呼ばれる手法が存在します。 これは GoF 定義の、かなり実用性のあるパターンなのですが、最近は優位点を生かせるような状況じゃないところに適用して、効率を落としているだけみたいな状況を見かけます。 なので、ちょっとネタとして。 Command パターンにはもともと以下のような弊害があります。 ・コマンドをどうやって選択するかが問題 ・execute で渡されるパラメタが一般化されすぎてしまう これを避けるために、Command の具象クラスの属性としてコマンド特有のパラメタを持たせるといったことが行われるのですが、当然この部分は汎用的に記述できないため、Command を呼び出す側ではなく、Command をインスタンスする側で行うことになります。 そうすると、Command を呼び出す時点のコンテキストに依存するパラメタを与えられ

  • Martin Fowler's Bliki in Japanese - 流れるようなインターフェース

    http://www.martinfowler.com/bliki/FluentInterface.html 2005/12/20 数ヶ月前、Eric Evansと一緒にあるワークショップに参加した。 そこで彼がとあるインターフェースのスタイルについて語ったのだが、 我々はそれを「流れるようなインターフェース(fluent interface)」と名づけることにした。 一般的なスタイルではないが、もっと評価されるべき代物だ。 おそらく例を示したほうがいいだろうから、そうしてみることにする。 一番簡単な例は、EricのtimeAndMoneyライブラリだろう。 時間の間隔を作るには、通常は、以下のようにする。 TimePoint fiveOClock, sixOClock; ... TimeInterval meetingTime = new TimeInterval(fiveOClock,

    reppets
    reppets 2009/12/19
    setterが自身のインスタンスを返すようなパターン。「Fluent interface」or「流れるようなインタフェース」。
  • http://japan.internet.com/webtech/20090519/2.html?rss

    reppets
    reppets 2009/05/24
    セキュアデザインパターン
  • 1