2015-03-25 2 views
1

Это теоретический вопрос о шаблонах программирования для проекта с открытым исходным кодом.Лучшая практика - реализация интерфейса как плагина

Мы разрабатываем проект с открытым исходным кодом Araword (написанный на Java, но это отчасти актуально), мы хотим добавить автономную функцию Text-To-Speech, так как теперь используется только онлайн-TTS от Google.

Программное обеспечение работает кросс-платформенно. Поэтому в соответствии с базовой ОС пользователь должен иметь возможность выбирать между своей платформой TTS или кросс-платформенным (Google).

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

1) Я слышал о Factory Method шаблон на википедии:

http://en.wikipedia.org/wiki/Factory_method_pattern

2) IoC/Услуги местоположение картина:

http://en.wikipedia.org/wiki/Service_locator_pattern

Я был бы признателен за любые предложения.

+1

Может быть, [Стратегия Pattern] (http://en.wikipedia.org/wiki/Strategy_pattern). Я думаю, что это не по теме, поскольку она основана на мнениях. Нет ни одного истинного ответа. – keyser

+0

Ознакомьтесь с [статьей Мартина Фаулера об инверсии контроля] (http://www.martinfowler.com/articles/injection.html). Он не является поклонником Service Locator, и я тоже. (Также вы можете попробовать [SE Programmer] (http://programmers.stackexchange.com/) как лучшее место, чтобы получить ответы на основе мнения.) – markspace

+0

@markspace мнение основанные на вопросах, очень плохи для программистов - они, как правило, быстро прогоняются и закрываются там, см. http://meta.programmers.stackexchange.com/questions/6483/why-was-my-question-closed-or-down -voted/6491 # 6491 Рекомендуемое чтение: ** [Что происходит с Programmers.SE? Руководство по переполнению стека] (http://meta.programmers.stackexchange.com/q/7182/31260) ** – gnat

ответ

1

Если вы хотите переключиться на TTS системы, чем сделать что-то вроде этого:

  1. Создать отдельный класс для управления системами TTS
  2. сделать класс проверки ОС, а затем переключить TTS соответственно
  3. Используйте класс TTS для динамического использования TTS системы.


Или использовать кросс-платформенную библиотеку FreeTTS, а затем осуществить это (Пожалуйста, обратите внимание, что голоса более низкого качества).

Проект FreeTTS можно найти здесь:

http://freetts.sourceforge.net/docs/index.php

Смежные вопросы