【发布时间】:2013-06-18 21:51:39
【问题描述】:
对不起,我很模糊,但我不知道这个概念的名称。我会尽力解释。我会试着用动物的方式来表达,这样会更容易。
我有一个通用的超类。这个超类包含所有动物都必须做的功能。例如,我不想在每个动物子类中重新定义“take_breath”子类,所以我在 Animals 超类中定义一次,所有动物(Animals::Cat、Animals::Dog 和 Animals::Llama)都可以简单地访问 $self->take_breath()。这些动物也经历了许多相同的初始化例程,而不是每次我简单地调用 $class->SUPER::new(@_) 以及做特定于该动物的事情时都重新定义它们。
每次初始化动物时都会这样说,它会通过它的超类的初始化例程。有数百只动物,它们运行了数百次。问题不大。
这些动物很聪明,并且知道如何使用 LWP::UserAgent 网络浏览器。为了访问互联网,他们必须登录网页并设置会话 cookie。他们都共享相同的登录名并希望共享相同的浏览器。在我当前的实现中,登录例程是超类新方法的一部分。这意味着当动物被初始化时,它会运行并且动物登录。正如我所说,我有数百只动物并且不想触发数百个 POST 请求。我想以某种方式启动登录例程并使其成为超类的一部分。然后每只动物都可以通过 $self->{'ua'} 访问“共享”网络浏览器。
我希望这能解释它,我不确定这个 OOP 术语叫什么。
TLDR 适合那些不喜欢动物的人
我在超类中有一个登录例程,它创建 LWP::UserAgent、登录并设置会话 cookie。子类都可以共享一个登录名。我不想为每个子类触发数百个 POST 请求来登录。我想以某种方式登录一次并与所有子类共享准备好的 $ua 对象。
【问题讨论】:
-
没有注意到本文中的问题符号;)但是是的,您可以轻松实现这一点。
标签: perl class oop subclass superclass