以下のコードは明らかにDemeterの法則、すなわちgetServer().methodx(...)
の方法を制止しています。反対側から見ると、かなりコンパクトに見えますが、より読みやすくなりますか?これはDemeterの法則に違反していますか?対読可能なコード
abstract class BaseManager {
ResultSet find(String searchText) {
return getServer().find(searchText);
}
ResultSet fetch(String fetchText) {
return getServer().fetch(fetchText);
}
void save(String saveText) {
getServer().save(saveText);
}
abstract BaseManager getServer();
}
class Server1Manager extends BaseManager {
@Override
protected BaseManager getServer() {
return server1;
}
}
class Server2Manager extends BaseManager {
@Override
protected BaseManager getServer() {
return server2;
}
}
法律に違反すると、このコードをどのようにリファクタリングするのですか? 事前に感謝します。