Конфиг парсер - статический или нет? - PullRequest
0 голосов
/ 20 февраля 2010

Представьте себе стратегию, при которой вам могут потребоваться парсеры для нескольких форматов конфигурационного файла, например, INI, XML и YAML. Их анализ приведет к появлению экземпляра общего класса, например Config_Data.

Я думаю, что, поскольку синтаксический анализатор имеет очень простой мандат, и нет состояния, которое я вижу, его лучше всего реализовать как статический класс, поэтому вы можете использовать следующее:

Parser_Ini::parse(...);
Parser_Xml::parse(...);
...

Это не совсем корректно для меня, поскольку, конечно, эти статические классы не могут реализовывать интерфейс и т. Д., Но, похоже, они имеют смысл.

Мне было бы интересно узнать ваши мысли по этому вопросу:).

Спасибо, Джеймс

Ответы [ 2 ]

1 голос
/ 20 февраля 2010

Создание статических классов имеет много недостатков, и я не вижу, что вы от этого получаете, кроме чувства удобства, которое, как мне кажется, вводит вас в заблуждение.

Если вы будете делать классы как обычные экземпляры и реализовывать интерфейс, у вас будет свобода изменять реализацию на лету.

Классы, которые зависят от вашего синтаксического анализатора, могут просто принять реализацию вашего интерфейса в качестве параметра, и вы тем самым можете внедрить любой тип синтаксического анализатора, который вам нужен для этого класса.

0 голосов
/ 20 февраля 2010

Вы не обязательно получаете никаких преимуществ с этим подходом, особенно если остальная часть вашего кода ориентирована на объект Он также запрещает вам использовать такие вещи, как фабричный шаблон, для создания вашего парсера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...