flat7th

memo/20120719

created 2012-07-19 modified 2012-07-19 

最近プログラムつくるときのお気に入り構成。

いわゆる普通のアプリケーションの場合


main()               Mainつくってメインループ呼ぶ

Main                 全部を所有。メインループはここに書く
◆
|
|__Configure         プロセスの設定、コマンドラインオプション等
|
|__EventStore        アプリ内のイベント保持。キー状態保持とか
|
|______Algorithm     ユーティリティ関数群。出力は戻り値かoutパラメータにする
|        |
|        ◇
|____Action          アプリの行動。箇条書き風のメソッド実装を目指す
|       ◇
|       |
|____DataMgr         データ管理
      ◇
      |
      |__*_DataEntry    アプリ実行に沿って増減するデータ


データ入出力が大事な場合


Main
◆
|
|__Configure         プロセスの設定、コマンドラインオプション等
|
|
|__IOMgr                   会社で言うと営業部
|    |__TransactionPool
|    |   |__Transaction            受けたもの、送るものの1セットを保持。トヨタでいうカンバン
|    |       |__RecvPacket         外部とのやり取りフォーマット
|    |       |__SendPacket
|    |       |__RecvData           内部処理フォーマット。パケットごとにたくさんつくる
|    |       |__SendData
|    |  
|    |__Layer1Decoder
|    |__Layer1Encoder
|    |__Layer2Decoder
|    |__Layer2Encoder
|    |  
|    |__PeerAHandler                あるお客さんAの営業担当者
|    |    |__PeerAReceiver          受信 (連番管理、...)
|    |    |__PeerASender            送信 (連番管理、...)
|    |__PeerBHandler
|    |    |__PeerBReceiver
|    |    |__PeerBSender
|    |__PeerCHandler
|    |    |__PeerCReceiver
|    |    |__PeerCSender
|    |
|    |__Timer
|
|__ActionMgr       会社で言うと内勤部署。Transactionは、ActionMgrというベルトコンベアを通って、1件終了。
|    |
|    |__State1Action           状態ごとに違う動きするならステートパターン使う。
|    |__State2Action
|    |__State3Action
|
|__DataMgr         データ管理。会社で言うと経理、倉庫、金庫、資料室。
    ◇
    |
    |__*_DataEntry    アプリ実行に沿って増減するデータ
    |
    |__*_ReservedTransaction  社内で保留されてるトランザクション

RecvData
 △
 |__CommandAAARequest      PeerA からの要求 とか
 |__CommandBBBRequest      PeerB からの要求 とか
 |__CommandCCCResponse     PeerC からの応答 とか

SendData
 △
 |__CommandAAAResponse
 |__CommandBBBResponse
 |__CommandCCCRequest



は!しまった、ポリシーに反してアルファベットで書いてしまった...

凡例
持ち主 ◆---- もたれるひと
参照するひと ◇-- 参照されるひと
基底クラス
  △
  |__派生クラス