아래의 코드는 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;
}
}
법률을 위반하는 경우이 코드를 리팩터링하는 방법은 무엇입니까? 미리 감사드립니다.