デザインパターン
F#は.NETの第一級言語だからオブジェクト指向だって余裕でできるよ関数型の考え方に基づいて、汎用的に使えるUndo,Redo機能の実装しようと考えたとき、 関数型言語のノウハウがない自分には、シックリくる良い案が全く思い浮かびませんでした。 F#は関数型パ…
不足気味でしたので、たまにはC#分を補充しておきます。 ↓ ↑ もう1年近く前になるんですね。以前、下記のエントリが注目を浴びていて、 わたしも楽しく読ませてもらいました。 Undo,Redoの実装って何十回もやってる気がする - あしあと日記 http://d.hatena…
id:atsukanrockさん、トラックバックありがとうございます。 「 熱燗ロックのブログ - .NET Frameworkで、シリアル化可能なタイプセーフenumを実装する - その2」を受けまして、 さっそく、まねまねさせて頂まして、再びTypeSafeEnumを書き直しました。 そう…
以前書いたAbstractなTypeSafeEnumでは、振舞いについてFuncデリゲート固定として実装していました。 でもやっぱり、ちゃんとしたStateパターン的なTypeSafeEnumが欲しいよね。 というわけで、タイプセーフEnumの振舞いについてジェネリックで抽象化してみま…
WeakEvent パターン(msdn.microsoft.com)というのがあります。 WPFでごにょごにょしているような方であれば、ご存知の人も多いようですが、 WPFと無縁の人たちにとっては、認知度がかなり低いようです。 WeakEventパターン*1が有用となるシナリオは、なにもW…
ExpandableObjectConverterのサブクラスで実装する内容TypeConverterAttribute属性を用いて、ExpandableObjectConverterおよび、その派生クラスを指定することで プロパティグリッドにネスト表示されるプロパティを作成することができます。 通常、Expandabl…
以前書いた、デザインパターン第10回「Iteratorパターン」その1はこちらです。 以前書いたときは、ただ単にIEnumerableインターフェイスおよび、IEnumeratorインターフェイスを そのまま利用しただけの例について、イテレータパターンを学習しました。 今…
■生成に関するパターン Singleton プログラム上、クラスのインスタンスが1つ(あるいは制限数ぶん)しかない事を保証し、 そのインスタンスにアクセスするためのグローバルな方法を提供する。 Builder 複合オブジェクトについて、その作成過程を表現形式に依…
以前書いた、デザインパターン第7回「Singletonパターン」その1はこちらです。 結城先生のホームページに、Singletonのサブクラス化という記事がある。 Singletonの考え方にもいろいろあるけれど、その中の考え方のひとつ、 「(2) クラスごとに管理 ―― ク…
デスマプロジェクトに放り込まれて、かなりヤラレていますが、 久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターン以外のパターンを取り扱いたいと思います。 スマートにコードを表現することができ且つ、ケアレスなバグを減らす効能のあ…
公私共にモチベーション低いですが、久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターンより、「Proxyパターン」をぬるーく解説します。 ■Proxyパターンの概要■ Proxyとは「代理人」という意味です。 現実の世界での「代理人」のイメージ…
随分と間が空きましたが、気が向いたので、久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターンより、「Commandパターン」をぬるーく解説します。 ■Commandパターンの概要■ Commandとは、「命令」を意味する言葉で、 コンピュータ用語とし…
後に書いた、デザインパターン第15回「Iteratorパターン」その2はこちらです。 なんだかんだで10回目を迎えましたデザパタ講座です。 さて今回は、GoFデザインパターンより「Iteratorパターン」をぬるーく解説します。 Iteratorパターンは、集約オブジ…
お久しぶりの、独りよがりなデザパタ講座です。 今回はGoFデザインパターンより、「Decoratorパターン」をぬるーく解説します。 Decoratorパターンは、実質的に継承と同じ機能を実現します。 ただ、継承に比べて結合度が低い分、このパターンでは柔軟な機能…
デザインパターンを学習する4つの理由 1.解決策の再利用 2.共通用語・共通認識の確立 3.個人々々のオブジェクト指向技術の向上 4.チームの開発効率の向上 1.解決策の再利用先人たちの経験や実績により、既に確立されている設計パターンを再利用す…
独りよがりなデザパタ講座も、ようやくGoFデザパタ23種類の内の3分の1を超えました。 今回はGoFの23種類のデザインパターンの中でも、最大級のクラス図で表され、 比較的複雑な部類である「Visitorパターン」をぬるーく解説します。 このパターンの考…
※デザインパターン第14回「Singletonパターン」その2はこちらです。 毎度恒例となりました、独りよがりなデザパタ講座。 今回はGoFデザインパターンの中から「Singletonパターン」をぬるーく解説します。 これは、一言で言うと、「1度作った1つのインス…
今回はGoFデザインパターンの中から 「Compositeパターン*1」をぬるーく解説します。 オブジェクト指向開発を進めていくと、このパターンの考え方が必要となる場面は多いだろう。 つまり、プリミティブなオブジェクトと、コンテナオブジェクトを一様に扱いた…
今回はGoFデザインパターンの中から 「Observerパターン」をぬるーく解説します。 Observerパターンは、イベントとイベントリスナの背後にある一般的なパターン。 まさにオブジェクト指向の基礎段階でも十分に発想できるようなアイディアの1つなので、 この…
今回はGoFデザインパターンの中から 「Strategyパターン」をぬるーく解説します。 もしこのパターンを知らないならば、このパターンを学ぶことを通して、 「インターフェイスの便利さ」を味わってもらえたらなあ、とか思う。 ■Strategyパターンの概要■ Strat…
今回はGoFデザインパターンの中から 「Chain of Responsibilityパターン」をぬるーく解説します。 ■Chain of Responsibilityパターンの概要■ Chain of Responsibilityは、直訳すると「責任の鎖」です。 つまり、伝言ゲームのように責任(要求)を委譲し、 責任…
複数人の開発者で、オブジェクト指向言語を用いて1つのシステム開発を行う場合、 開発者は「クラスを作る人」と「クラスを使う人」という2つの立場を使い分けることになります。 開発者が「クラスを作る人」の立場に立ったときは、 クラスを使う人に楽をさ…
デザインパターンとは、オブジェクト指向プログラミングにおいて 再利用可能な汎用的設計パターンのことを指します。 プログラマの世界では、様々なデザインパターンが知られていますが、 その中でもとりわけ有名なのが「GoFデザインパターン」です。 GoF(…