【问题标题】:Child classes implement a MooseX::Interface with MooseX::ABC (Abstract Base Class)子类使用 MooseX::ABC(抽象基类)实现 MooseX::Interface
【发布时间】:2016-05-24 04:24:12
【问题描述】:

我试图强制抽象基类的所有子类实现接口。当我尝试在 ABC 中添加with '<interface>' 时,需要我立即实现所需的方法,并为每个接口方法添加sub <method> {}

为了说明问题,

package drawAPI {
   use MooseX::Interface;
   require 'draw';
   one;
}

package shape {
   use MooseX::ABC;
   with 'drawAPI';
}

package square {
   extends 'shape';
    #here is where having a draw subroutine would be inforced
   sub draw {};
}

有谁知道这样做的方法吗?或者可以推荐一组不同的模块来完成这个?

谢谢

【问题讨论】:

    标签: perl interface moose abc


    【解决方案1】:

    MooseX::ABC 的文档指出“注意:这个模块几乎肯定是个坏主意。你真的只想使用一个角色!”。 MooseX::Interface 的文档指出“接口只是具有一些额外限制的角色......”您选择的模块表明您希望 Moose 看起来和工作像 Java,这是一个失败的原因。好消息是Moose Roles 几乎肯定可以提供很多(如果不是全部)您正在寻找的行为。此外,您可能会对使用 Java 中没有类似物的角色可以完成的一些强大的事情感到惊讶。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多