工厂模式
工厂模式用于解决对象创建的问题。
案例:
根据不同的文件类型来创建不同的解析器,可以使用工厂模式。
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>");
客户端代码不直接依赖于具体的解析器类,而是通过工厂类来获取所需的解析器。