0

我试图强制抽象基类的所有子类实现接口。当我尝试添加with '<interface>'到 ABC 时,它要求我立即实现所需的方法并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 {};
}

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

谢谢

4

1 回答 1

0

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

于 2016-02-24T17:51:33.817 回答