デザインパターン:Scene Producer パターン(仮)(part 1)

こんにちわ。もち米低下中のほげPGです。今回は私がよく使うデザインパターンを紹介します。
Scene Producer パターン(仮)
Scene Producer パターン(仮)とは、アプリが実施すべき一連の処理をシーン(場面)に分割し、シーンごとに処理を記述し、シーンを切り替えていくことで一連の処理を実現する仕組みを提供する。一連の処理を一つのスレッドで制御できない場合に効果的である。
概要図

利用例
Java による利用例を以下に挙げる。
class Scene {
public void start() {
}
public void stop() {
}
public void onClick(View v) {
}
}
class SceneA extends Scene {
protected Producer producer;
public void start() {
// 画面表示など
// 画面押下イベントはProducer#onClick()に飛ばす
}
public void onClick(View v) {
// 適当な振る舞い
producer.next("sceneB");
}
public void stop() {
// 画面非表示など
}
}
class SceneB extends Scene {
public void start() {
// 適当な振る舞い
}
}
class Producer {
Map map = new HashMap();
Scene current = new NullScene();
public void add(String name, Scene scene) {
scene.producer = this;
map.put(name, scene);
}
public void next(String name) {
current.stop();
current = map.get(name);
current.start();
}
public void onClick(View v) {
current.onClick(v);
}
}
public class Application {
public static void main(String[] args) {
Producer producer = new Producer();
producer.add("sceneA", new SceneA());
producer.add("sceneB", new SceneB());
producer.next("sceneA");
}
}
関係するパターン
Facade パターン
Adapter パターン
Mediator パターン
次回は本パターンを使ったサンプルの予定。