현재 클래스 과제를 완료 중이며 질문 중 하나가 나에게 주어진 샘플 코드 일부를 재구성하기를 원합니다.팩토리 메서드 패턴에 대해 무효 반환
지나치게 정밀하지 않으면서도 여러 가지 하위 클래스가있는 추상 클래스가 있으며 각각의 다른 하위 클래스에는 해당 하위 클래스의 종류에 따라 무기가 할당됩니다.
if (this.getClass().getSimpleName().equals("FighterJet")) {
this.weapon = new GuidedMissileSystem();
System.out.println("FighterJet " + id + " equipped with " + weapon.getClass().getSimpleName());
}
else if (this.getClass().getSimpleName().equals("AttackHelicopter")) {
this.weapon = new GrenadeLauncher();
System.out.println("AttackHelicopter " + id + " equipped with " + weapon.getClass().getSimpleName());
...
그러면 콘솔에 하위 클래스와 무기의 이름이있는 문자열이 인쇄됩니다.
추상 추상 클래스에는 일련의 if 문이있어 어떤 하위 클래스인지 확인하고 적절한 무기를 할당하고 적절한 문자열을 인쇄합니다.
그들은 디자인 패턴을보고 제안했지만 'factory method'를 선택했습니다. 서브 클래스의 이름을 가진 문자열을 인쇄했기 때문에이 메소드에서 아무것도 반환하지 않기로 결정했습니다. 이 구문을 통한 무기 :
this.weapon = //whatever weapon
및 무효 반환.
이것은 여전히 공장 방법으로 간주됩니까? 나는 그렇지 않다고 생각한다.
감사합니다.
일반 설명 : 문자열 비교를 통해 'this instanceof FighterJet' 또는'getClass(). equals (FighterJet.class) '를 선호합니다. 정확하고 덜 복잡합니다. –
Noted, thanks :) –