1
何を達成しようとしてI'am:
- このテキストファイルパーサー
- 最初の文字に応じて、私は
正しいパーサーオブジェクトを作成します - 私は右Factoryパターン
を使用してそうすることを望みます - 私のコードが工場パターンに正しく適合しているかどうか教えていただけますか?
- ありがとう!私見それは明確だから:-)
このファクトリメソッドは、私がしようとしているもののための良いものですか?ここで
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'クラスを抽象クラスに変更するだけです。 – netcoder