工厂模式

67 阅读1分钟

工厂模式

工厂模式用于解决对象创建的问题。

案例:

根据不同的文件类型来创建不同的解析器,可以使用工厂模式。

interface Parser {
    parse(input: string): any;
}
​
class JsonParser implements Parser {
    parse(input: string) {
        return JSON.parse(input);
    }
}
​
class XmlParser implements Parser {
    parse(input: string) {
        // 假设这里有XML解析的逻辑
        console.log("Parsing XML:", input);
        return input;
    }
}
type ParserType = 'json' | 'xml'
class ParserFactory {
    static getParser(type: ParserType): Parser {
        switch (type) {
            case "json":
                return new JsonParser();
            case "xml":
                return new XmlParser();
            default:
                throw new Error("Unsupported parser type");
        }
    }
}
const jsonParser = ParserFactory.getParser("json");
console.log(jsonParser.parse('{"name": "John", "age": 30}'));
​
const xmlParser = ParserFactory.getParser("xml");
xmlParser.parse("<name>John</name><age>30</age>");

客户端代码不直接依赖于具体的解析器类,而是通过工厂类来获取所需的解析器。