C++とDI

まこたんさんの日記にC++とDIについてのエントリーがあるのを発見!!
「組み込み(C++)にもDIを!」なんて言ってから随分と日が経つというのに,不勉強モード全開のため,いまだDIで扱うべきコンポーネントがなんなのかすらイメージが湧いていないし,設定ファイル(DICON)のイメージすらないorz
せっかくの機会なのに・・・,あぁ情けない(><)

とりあえず,現状のわけ分からん状態をつまびらかにしてみるテストorz。

DIについて

DI
Dependency Injectionの略。「依存性の注入」。
  1. アプリケーションの拡張性が高くなる
  2. テストが容易になる
  3. コンポーネントの可搬性が向上する
  • 疑問
    • C++(組み込み)プログラムで,コンポーネントってどういうものになるんだろ?
    • FactoryやProxyを実装しなくて良いのはどれだけメリットあるのだろうか?
    • プラグインアーキテクチャを実現するためにDI以外にもっと効果的な実現手段はないだろうか?
      • はぶさんからのヒント(@すなあそび)
      • MSのCOMみたいなものとか・・・。

組み込み(C++)でのコンポーネント

こちらもあまり考えがないのだが・・・
イメージできるとすれば,OPOS 技術協議会で定義してるOPOSコントールくらい。
例えばバーコードリーダとか自動つり銭機(ドロア)とかなどがコントロール(≒コンポーネント)になる。
こいつらは,OLE(COM)を利用してコンポーネントの可搬性を実現しているも(Windowsプラットフォーム上の様々なPOS端末に限定)。扱うデバイスがいろいろな種類と組み合わせがあるので,デバイスレベルでコンポーネントにしておくと,アプリケーションは変更なくて嬉しい(理想的には)。
コントロールは内部で,デバイスに依存しないコントロールレベルとデバイス制御に特化したサービスレベルとにレイヤ分割されている。

・・・一方で,アプリケーションをコンポーネントの組み合わせで構成すると考えた時,コンポーネントってドメイン(問題領域)単位になるのかなぁ・・・
ユーザー目的から実際の実現手段まで抽象度レベルに応じたコンポーネントという構成もあるかな。
あるいはその組み合わせが現実的かも?

ああ,もっとちゃんと勉強しないと・・・。