...ing logging 4.0

はてなブログに移行しました。D言語の話とかいろいろ。

てこいれ

あまりにも破綻がひどくなったので,時間がないんだけど実装のてこ入れを慣行.
何とか元通りになって,構造がすっきりしたからこれからの見通しが立った.
これならなんとかなるだろう.

今回導入した方法は,ダブルディスパッチというのかな?
いまいち理解してないままなのだけど.
ドラッグアンドドロップの手法が3通りあって,カーソルの切り替え方法が2通りある.
一方のカーソル切り替え方法はstateクラスが4つ,もう一方は5つ必要.
だから,まともにクラスを作ると,(4+5)×3=27ものクラスを実装しなければいけなかった.

これは大変すぎるってことで,ドラッグアンドドロップ手法のクラス継承ツリーと,切り替え方法のクラス継承ツリーを分離.
そして,ドラッグアンドドロップ手法のクラスのインスタンスに,切り替え方法のクラスのインスタンスを渡して,前者のメソッドの中で後者のメソッドに委譲.
これで,(4+5)+3=12のクラスを実装するだけでよくなった.
デザインパターンさまさまだね♪