デザインパターン

C++でデザインパターンを実装していこうよ 第23回 Iteratorパターン

ついに今回でこの企画も最後ですね。最後はIteratorパターンです。なんか理由があってIteratorを最後に持ってきたかというと、そういうわけでもなくて、ないわけでもなくて、、、というのは、IteratorパターンをC++で実装したところでほぼ意味が無いというか…

C++でデザインパターンを実装していこうよ 第22回 Interpreterパターン

興味深くはあるし、学んでよかったとは思うけれど…。自分が個人的に作るソフトに拡張用のスクリプト的なのをつけようとしたら、 http://code.google.com/p/chibi-scheme/ この辺のありもんを使えないかってまず考えるし、 自分でちゃんと作るならもっといろ…

C++でデザインパターンを実装していこうよ 第21回 Commandパターン

コマンドパターンです。アンドゥリドゥにつかえます。というか、呼び出し時と別のタイミングで必要なパラメタを渡しておけて、使うときは何も知らんでもExecute()を呼び出せばオブジェクト側で良い感じに実行してくれるってのがいいってはなしですね。http:/…

C++でデザインパターンを実装していこうよ 第20回 Proxyパターン

今回はProxyパターンです。今回のサンプルだとなんもメリットが無い感じですね。なんしか一枚皮をかぶせることによってオブジェクトの生成のタイミングを遅らせたり、アクセス権を設定したりとかいろいろできるよってことみたいです。汎用的な分抽象的ですが…

C++でデザインパターンを実装していこうよ 第19回 FlyWeightパターン

今回はFlyWeightパターンです。 とってもSingletonっぽいですね。ただ、一度生成したインスタンスをSingletonではインスタンスそのものがstaticとして持っていたのに対し、FlyWeightでは今回のサンプルだとCharacterFactoryがコレクションとして持っています…

C++でデザインパターンを実装していこうよ 第18回 Stateパターン

C#のコードだと.hと.cppに分けるみたいなことはないっぽいので、というかすくなくともサンプルコードではそういうことはないのでなんとなくそれっぽくC++で書いてきて、いままでほぼ問題なかったのでそのままだったんですが、今回はヘッダと分けたほうがよか…

C++でデザインパターンを実装していこうよ 第17回 Mementoパターン

オブジェクトの状態を保存する、ってやつですね。今回のサンプルで微妙なのはname_とかphone_とかがかぶっちゃってるところですね。今回の場合Mementoクラスがただのデータホルダクラスなんだから、SalesProspectクラスのメンバとしてMementoオブジェクトの…

C++でデザインパターンを実装していこうよ 第16回 Mediatorパターン

この企画の良い点は、あんまり考えなくてもコードをC++に書き直してるうちになんとなく"あーそういうことか"ってなるので、仕事が終わってから寝る前にビャってやってしまえる点です。良くない点はあんまり考えないし、わざわざいろいろ調べるほどには元気が…

C++でデザインパターンを実装していこうよ 第15回 ChainOfResponsibilityパターン

今回はChainOfResponsibilityパターンです。たらいまわし的なことでしょうか?まず、Approverクラスの子をSetSuccessor()メソッドで鎖状につなげます。そしたら、その鎖に対してひとつずつ引数として渡されたPurchaseオブジェクトを受け入れるか否かをProces…

C++でデザインパターンを実装していこうよ 第14回 Visitorパターン

今回は、Visitorパターンです。 初めて見たときは完全に"?"でしたが、今見ると少し面白いですね。訪問されるオブジェクト(例ではElementインタフェースの実装であるEmployeeとか)のコレクション(Employees)に、訪問するオブジェクト(IVisitorインタフェース…

C++でデザインパターンを実装していこうよ 第13回 Compositeパターン

今回はCompositeパターンです。要は、"フォルダはフォルダもファイルも一緒くたに格納できるよ"的なことですね。今回はPrimitiveElementは直線とか円とかの単純な図形で、CompositeElementはそれらの単純な図形やそれを組み合わせたCompositeElementを組み合…

C++でデザインパターンを実装していこうよ 第12回 Builderパターン

やっと半分きましたね。今回はBuilderパターンです。オブジェクトの生成に関するパターンとして、すでにAbstractFactoryパターンやFactoryMethodパターンを扱いましたね。これらがどっちかというと、"あるインタフェースのどの実装を実体化するか"的なことに…

C++でデザインパターンを実装していこうよ 第11回 Prototypeパターン

Prototypeパターンは、初めて知ったときもぴんときませんでしたが、いま読み直してもぴんときませんでした。今回の例で言えば、ColorPrototypeインタフェースの任意の子クラスのコピーコンストラクタを、子クラスの種類を知らなくてもclone()メソッドから呼…

C++でデザインパターンを実装していこうよ 第10回 FactoryMethodパターン

適切な実装の集合を実体化するという目的のパターンで、AbstractFactoryとあんまり変わりません。AbstractFactoryは委譲で行っていたことを、FactoryMethodパターンでは継承を使って行っている、と考えて良いんだと思います。「これはAbstractFactory!こっち…

C++でデザインパターンを実装していこうよ 第9回 Singletonパターン

Singletonパターンは非常にわかりやすいんじゃないでしょうか。Modern C++ Designには別の方法を使った書き方みたいなのものってましたね。http://www.dofactory.com/Patterns/PatternSingleton.aspx#_self2今回は普通にstaticなメンバを使った実装です。htt…

C++でデザインパターンを実装していこうよ 第8回 TemplateMethodパターン

初めてデザインパターンを学んだとき、一番理解しやすいと感じたのがTemplateMethodパターンでした。今回の例は http://www.dofactory.com/Patterns/PatternTemplate.aspx#_self2 これです。なんかデータベースへのアクセスをしてますが、書き直したバージョ…

C++でデザインパターンを実装していこうよ 第7回 Observerパターン

http://www.dofactory.com/Patterns/PatternObserver.aspx#_self2 今回のお題は今までの中では一番良い感じかなと思います。株価(Stock::price_)が変わると投資家(Investor)に通知(Notify)が行きます。"株価が変わったら通知がいく"ってのは所謂共通性で、そ…

C++でデザインパターンを実装していこうよ 第6回 Decoratorパターン

まず今回のお題です。 http://www.dofactory.com/Patterns/PatternDecorator.aspx#_self2図書館で借りられるものというLibraryItemクラスから派生しているBookクラスとVideoクラスがあって、これにDecoratorパターンを使ってBorrowable(借りられる)という性…

C++でデザインパターンを実装していこうよ 第4回 Strategyパターン

"オブジェクト指向のこころ"で3つ目はStrategyパターンでしたね。別にその順にしなきゃならないわけではないのですが、とりあえず今回はStrategyパターンにします。今回のお題は http://www.dofactory.com/Patterns/PatternStrategy.aspx#_self2 です。C++…

C++でデザインパターンを実装していこうよ 第3回 Bridgeパターン

"オブジェクト指向のこころ"をはじめて読んだとき、Bridgeパターンで一度挫折しかけました。「実装から抽象的側面を切り出して、それらを独立して変更できるようにする」"オブジェクト指向のこころ"では、[抽象的側面]がShapeクラス、[実装]がDrawingクラス…

C++でデザインパターンを実装していこうよ 第0回 はじめに

デザインパターンの復習していきます。毎回1つのパターンを取り上げて、そのパターンを使えるお題を無理やりひねり出してそれをC++で実装して行こうと思います。 とおもったけど自分で無理やりひねり出すのはやめました。 思ってた以上に思いつかなかったの…