1
무엇을 달성하려고 I'am :
-이 텍스트 파일 파서
- 첫 번째 문자에 따라 내가
올바른 파서 객체를 생성 - 내가 바로 공장 패턴
를 사용하여 그렇게 할 - 내 코드가 공장 패턴과 정확히 일치하는지 알려주시겠습니까?
- 감사합니다. 이럴가 명확 때문에 :-)
이 공장 방법은 내가 시도한 것을 위해 좋은 것입니까? 여기
class Parser { protected $src; public function __construct($src) { $this->src = $src; } } class Format1Parser extends Parser { public function Parse() { // Parsing format 1 // ... } } class Format2Parser extends Parser { public function Parse() { // Parsing format 2 // ... } } class ParserFactory { public static function GetParser($src) { $header = substr($src,0,7); if ($header == "format1") { return(new Format1Parser($src)); } if ($header == "format2") { return(new Format2Parser($src)); } return(false); } } $parser = ParserFactory::GetParser(file_get_contents("file.txt")); $parser->Parse();
답장을 보내 주셔서 감사합니다. 사실, 코드는 당신이했던 것처럼 더 낫습니다. 그러나 제 질문은 좋지 않았습니다. 좋은 방법은 "내 코드가 팩토리 메서드 패턴에 올바르게 맞습니까?"및 "이 작업을 수행하는 데 더 좋은 패턴이 있습니까?" – Antoine
글쎄, 팩토리 패턴의 목적은 같은 타입 (이 경우 파서)의 클래스를 만드는 것이다. 따라서 구현이 좋습니다. 앞서 말한 것처럼 런타임 오류를 방지하기 위해'Parser' 클래스를 abstract 클래스로 변경해야합니다. – netcoder