1 abstract class Framework Main Framework Sub sub
制御の反転と多相性(1) abstract class Framework. Main { Framework. Sub sub; void main. Loop() { // メインループ for (; ; ) { sub. proc(); // この呼び出しで制御が反転 } } } abstract class Framework. Sub { abstract void proc(); // アプリケーション毎の処理 } フレームワーク側
制御の反転と多相性(2) class Application. Main extends Framework. Main { void main() { sub = new Application. Sub(); // 依存性の挿入 main. Loop(); } } class Application. Sub extends Framework. Sub { void proc() { // 制御の反転で呼び出される // アプリケーション固有の処理を行う } } アプリケーション側
フレームワークの例 p PCアプリ n p スマホアプリ n p Struts, Spring, Jersey, … データベース n p Android SDK, i. OS SDK, … Webアプリ n p Swing, AWT, … Hibernate, i. Batis, … ビッグデータ n Hadoop, …
Swingの場合(1) abstract class Component… { // GUI部品クラス Mouse. Listener listener; void process. Mouse. Event(…) { // 共通の処理 : listener. mouse. Clicked(…); // 制御の反転の発生 : } } interface Mouse. Listener … { // マウスイベント処理用 void mouse. Clicked(…); } フレームワーク側
- Slides: 10