私が現在取り組んでいる従来の Java コードベースは、悪名高いフレームワークを利用しています。すぐに使用できるドメイン クラスが適切にパッケージ化された jar で提供されます。ドメイン クラスは、getter と setter の袋にすぎません。
これは、手続き型コードを静的な Util クラスから適切な場所、つまりドメイン クラス自体に抽出することによって、豊富なドメイン モデルを作成することを妨げています。たとえば、次のメソッド内のロジックを考えてみましょう。
public static boolean areFriends(User user1, User user2) {
for (User friend : user1.getFriends()) {
if (friend.equals(user2)) {
return true;
}
}
return false;
}
isFriendOf(User another)
これは、代わりにUser
クラスのようにうまく表現できます。しかし、User
クラスはすべてロックされています。ところで、フレームワークはライフサイクル メソッドを使用してUser
オブジェクトを渡します。
//Life-cycle method
public void execute(FrameworkBlob frameworFattyObject) {
...
User user = frameworFattyObject.getUser();
User loggedInUser = getLoggedInUserFromSomewhere();
bool areFriends = BadUtilClass.areFriends(user, loggedInUser);
...
}
テスト容易性を念頭に置いて、次のようなことを言う方法はありますか:
bool areFriends = user.isFriendOf(loggedInUser);