나는 전략 패턴 을 이해하려고 노력 하고 있습니다. 컨텍스트 클래스는 패턴의 목적을 훼손하지 않고 제거해야합니까?
다른 유형의 파일을 읽기 위해 일종의 스위치가 필요하다는 인상을 받았지만 무언가를 해킹하고 나중에 리팩토링을 처리하고 싶지는 않았습니다 (물론 항상 코드를 리팩터링 할 수는 있지만 아이디어는 다음과 같습니다. 사전에 디자인에서 가능한 한 똑똑해야합니다 ...) :
wikimedia 에서 가져온 이미지
클라이언트가 Strategy 인터페이스에 직접 위임 할 수 있습니까? 아니면 컨텍스트 클래스에 대해 이해하지 못한 것이 있습니까?
interface Reader {
// read information from file and fill data list field of Client
readFile();
}
class ExcelReader implements Reader{ /* */ }
class PdfReader implements Reader{ /* */}
class Client{
// strategic choice
Reader r;
// data list field
List<Data> data;
// Client Constructor
public Client(){
if(<file ends in .xls>)
r = new ExcelReader();
else
r = new PdfReader();
r.readFile();
}
}
따라서 위에서 설명한 컨텍스트 클래스가 없습니다. 코드가 전략 패턴을 준수합니까?