这是经典的对象模型:
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
}
我想将其转换为 Perl Moose 类模型。
以便,
我将调用视图方法,例如
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 中开发。
您可以想象 Application 是一个 GUI 应用程序,而 View 是您在应用程序窗口中看到的内容。用户可以选择任何视图。
我对我的英语感到抱歉。如果我需要提供更多文字,请告诉我。