기본적으로 특정 조건에 따라 다른 작업을 실행해야합니다. 기존 코드는 이런 식으로 작성됩니다
기본 인터페이스
// DoSomething.java
interface DoSomething {
void letDoIt(String info);
}
첫 번째 노동자 계급의 이행
class DoItThisWay implements DoSomething {
...
}
두 번째 노동자 계급의 이행
class DoItThatWay implements DoSomething {
...
}
메인 클래스
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
worker = new DoItThisWay();
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
이 코드는 정상적으로 작동하며 이해하기 쉽습니다.
이제 새로운 요구 사항으로 인해 타당한 새로운 정보를 전달해야합니다 DoItThisWay
.
내 질문은 :이 요구 사항을 처리하는 데 다음 코딩 스타일이 좋습니까?
새로운 클래스 변수 및 메소드 사용
// Use new class variable and method
class DoItThisWay implements DoSomething {
private int quality;
DoSomething() {
quality = 0;
}
public void setQuality(int quality) {
this.quality = quality;
};
public void letDoIt(String info) {
if (quality > 50) { // make use of the new information
...
} else {
...
}
} ;
}
이렇게하면 발신자에게 해당하는 변경이 필요합니다.
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
int quality = obtainQualityInfo();
DoItThisWay tmp = new DoItThisWay();
tmp.setQuality(quality)
worker = tmp;
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
좋은 코딩 스타일입니까? 아니면 그냥 던져도 될까요
class Main {
public doingIt(String info) {
DoSomething worker;
if (info == 'this') {
int quality = obtainQualityInfo();
worker = new DoItThisWay();
((DoItThisWay) worker).setQuality(quality)
} else {
worker = new DoItThatWay();
}
worker.letDoIt(info)
}
DoItThisWay
하고 DoItThatWay
의 생성자에 한 번 수행됩니다 Main
. Main
오래 사는 클래스이며 doingIt
여러 번 반복해서 부릅니다.
setQuality
의 수명 동안 메소드가 여러 번 호출 된다는 것을 의미 DoItThisWay
합니까?
quality
생성자에 전달하지DoItThisWay
않습니까?