Perl: Централизованный Вызов Классов И Методов. Из Одного Отдельного Класса.

Идея такая: если, скажем, в процессе работы вы используете определенное окружение, какие-то классы и модули, то может случиться так, что вы действительно захотите использовать какой-то класс-проводник между обычными классами и непосредственно путем ты.

Здесь даже можно выделить несколько положительных моментов в этом.

Например, вы не включаете все классы в каждый скрипт, создавая упорядоченный столбец обычного «использования» в заголовке кода.

Ну давайте как бы сэкономим место.

Можно и так придумать: вы не используете прямое подключение к классу и вызываете его методы через класс-проводник, что не мешает вам заменять один класс другим и даже не замечать разницы.

Конечно, если методы в обоих классах одинаковые :-) В любом случае у вас должно получиться что-то вроде этого:

my $name = $myClass->cgi->param( 'name' ); my $date = $myClass->date->get_local_date();

То есть ваш класс проводника ссылается на псевдоним, его внутреннее представление нужного класса.

Это что-то такое, в общем.

Для этого в нашем классе проводника организуем хеш-таблицу представлений нужных классов:

my $classes = { cgi => CGI, date => My::Date::Module };

По сути, первое звено в цепочке $myClass-> cgi-> param — это метод. Метод, которого нет и не будет в нашем классе проводника, по той простой причине, что вообще удивительно писать кучу методов использования классов.

Мы будем использовать то, что нам дает Perl — метод AUTOLOAD, который вызывается, если метод класса не найден.

Соответственно, сам вызываемый метод находится в переменной $AUTOLOAD:

sub AUTOLOAD { my $self = shift; $self->{$sub} = $classes->{$sub}->new unless $self->{$sub}; return $self->{$sub}; }

Этот метод просто создает экземпляр класса, если он еще не создан, или просто возвращает его обратно, если он уже существует. Этот метод имеет ряд недостатков.

Например, не совсем понятно, зачем это нужно =) Шучу.

Это может пригодиться.

Но не в тех случаях, когда конструктор нужного вам класса содержит массу полезных настроек, которые вы часто меняете.

Но в остальном круто.

Теги: #perl #классы #Чулан

Вместе с данным постом часто просматривают: