想象一下这样一种策略,你可能希望解析器有多种格式的配置文件,例如INI,XML和YAML。解析这些将导致公共类的实例说'Config_Data'。
我的想法是,由于解析器具有非常简单的任务,并且没有我能看到的状态,因此最好将其作为静态类实现,因此您可以使用以下内容:
Parser_Ini::parse(...);
Parser_Xml::parse(...);
...
这对我来说并不完全正确,因为这些静态类当然不能实现接口等,但它们似乎很有道理。
我很想知道你对此事的看法:)。
谢谢, 詹姆斯
答案 0 :(得分:1)
创建静态类有很多缺点,我不会看到你从中获得什么,除了方便的感觉,我觉得这会误导你。
如果您将这些类作为常规实例类来实现,并实现一个接口,您可以随时自由地更改实现。
依赖于解析器的类可以将接口的实现作为参数,从而可以在该类中注入所需的任何解析器类型。
答案 1 :(得分:0)
使用这种方法并不是必须获得任何优势,特别是如果代码的其余部分是面向对象的。它还禁止您使用工厂模式之类的东西来构建解析器。