Вот классическая модель объекта:
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.
Вы можете представить, что Приложение - это приложение с графическим интерфейсом, а View - это то, что вы видите в окне приложения. Пользователь может выбрать любой вид.
Прошу прощения за мой английский. Пожалуйста, дайте мне знать, если мне нужно предоставить больше текста.