【发布时间】:2014-02-10 09:17:18
【问题描述】:
我已经学习 Scala 进行 Web 开发已经有一段时间了,但我偶然发现缺少接口。来自 PHP,我在方法级多态性和 IoC 中使用了很多接口,如下所示:
interface iAnimal
{
function makeVoice();
}
class Cat implements iAnimal
{
function makeVoice()
{
return "Meow";
}
}
class Dog implements iAnimal
{
function makeVoice()
{
return "Woof!";
}
}
class Box
{
private $_animal;
function __construct(iAnimal $animal)
{
$this->_animal = $animal;
}
function makeSound()
{
echo $this->_animal->makeVoice();
}
}
等等,这是一种简单的方法来确保我传递给Box 对象的任何东西都具有我在其他地方调用的makeVoice 方法。现在,我很好奇的是如何使用 Scala 实现类似的功能。我试图搜索这个,但信息非常稀缺。我找到的唯一答案是使用特征,但据我所知,它们用于具体实现,而不是声明。
提前致谢。
【问题讨论】:
-
您的问题与控制反转无关,与多态性有很大关系。您可能需要改写一下。
-
你是对的。我把依赖倒置误认为是 IoC。