まず、私のユビキタス言語は PHP で、Java の学習を考えています。
そこで、私の質問を 2 つの密接に関連する部分に分割させてください。
ここまでが第一部です。
ドメインモデル クラスがあるとします。いくつかのゲッター、セッター、いくつかのクエリ メソッドなどがあります。いつかそれらを比較できるようにしたいと考えています。したがって、次のようになります。
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で?