私はEric Evansによって書かれた華麗な本 "Domain Driven Design"を読んでいます。彼の著書Ericは、仕様パターンとポリシーの2つの異なる概念について説明しています。ここ仕様とポリシーの違いは?
public interface ProjectSpecification {
public boolean isSatisfiedBy(Project p);
}
public class ProjectIsOverdueSpecification implements ProjectSpecification {
public boolean isSatisfiedBy(Project p) { … }
}
//client:
if {
(projectIsOverdueSpecification.isSatisfiedBy(theCurrentProject) { … }
}
は、ポリシーの例である:
public class CargoBooking {
private OverBookingPolicy overBookingPolicy = new OverBookingPolicy();
public int makeBooking(Cargo cargo, Voyage voyage) {
if (!overbookingPolicy.isAllowed(cargo, voyage))
return –1;
int confirmation = orderConfirmationSequence.next();
voyage.addCargo(cargo, confirmation);
return confirmation;
}
}
public OverBookingPolicy {
public boolean isAllowed(Cargo cargo, Voyage voyage) {
return (cargo.size() + voyage.bookedCargoSize()) <= (voyage.capacity() * 1.1);
}
}
Iポリシーが実際に戦略であることを知っているが、そこに上記の2つの例でここ
は仕様の一例です違いは全くありません。ですから、私の質問はこの時点でです:これら2つのパターンの違いは何ですか?どちらのパターンでもビジネスルールが明示的になります。なぜこれらの2つのパターンを区別するのでしょうか?私にとっては、どちらも述語の一種です。
私は、仕様はインスタンスの機能の記述を対象としており、ポリシーは動作の記述に関するものであると言います。しかし、私は本当によく分かりませんが、私も本を読んでいます。 – SpaceTrucker