これが古典的なオブジェクトモデルです。
class ViewBase
{
void DoSomethingForView() { } //May be virtual
}
class View1 : ViewBase //(derived class from ViewBase)
{
void DoSomethingForView() { }
void DoSomethingForView1Special() { }
}
class View2: ViewBase //(another derived class from ViewBase)
{
void DoSomethingForView2Special() { }
}
class Application
{
void Print() { }
void DoSomething() { }
//Do some magic to create a view object (View1 or View2) and return
//Something which I don't know to describe. Its like dynamically
//returning object of View1 or View2 at runtime
}
これをPerlMooseクラスモデルに変換したいと思います。
となることによって、
次のようなviewメソッドを呼び出します
void Main()
{
App = new Application();
App->View1->DoSomethingForView();
App->View1->DoSomethingForView1Special();
App->View2->DoSomethingForView();
App->View2->DoSomethingForView2Special();
}
どのビューを呼び出すかわかりません。ただし、実行時に、View1 / View2インスタンスを作成し、DoSomethingForView()を呼び出す必要があります。
上記のコードは正確にはPerlではありません。Perlでこれを翻訳して達成する方法。
ApplicationオブジェクトにはViewオブジェクトが必要ですが、コンパイル時にビューのタイプはわかりません。テストアプリケーション、Perlでの開発があります。
アプリケーションはGUIアプリケーションであり、ビューはアプリケーションウィンドウに表示されているものであると想像できます。ユーザーは任意のビューを選択できます。
英語でごめんなさい。さらにテキストを提供する必要がある場合はお知らせください。