首先,我的无所不在的语言是PHP,我正在考虑学习Java。
所以让我把我的问题分成两个密切相关的部分。
这是第一部分。
假设我有一个域模型类。它有一些 getter、setter、一些查询方法等。有一天我想有可能比较它们。所以它看起来像:
class MyEntity extends AbstractEntity
{
public function getId()
{
// get id property
}
public function setId($id)
{
// set id property
}
// plenty of other methods that set or retrieve data
public function compareTo(MyEntity $anotherEntity)
{
// some compare logic
}
}
如果是 Java,我应该实现一个Comparable
接口。但为什么?多态性?可读性?或者是其他东西?如果是 PHP——我应该Comparable
为自己创建接口吗?
所以这里是第二部分。
我的同事告诉我,Java 的经验法则是为类的每个行为方面创建接口。例如,如果我想将此对象表示为一个字符串,我应该用类似的东西来说明这种行为implements Stringable
,如果是 PHP ,则Stringable
如下所示:
interface Stringable
{
public function __toString();
}
这真的是经验法则吗?这种方法有什么好处?在 PHP 中值得吗?在Java中?