2015-04-25 4 views
3

У меня есть приложение, которое содержит около 10 различных компонентов (чат, канал, профиль, настройки и т. Д.).Как построить модульное приложение

Мне нужна возможность создавать несколько приложений, каждая из которых будет иметь несколько компонентов.

пример:

  • app1 - будет иметь настройки чата и профиль.
  • Приложение 2 - будет иметь фид и настройки.

Как я должен подходить к этому?

Я думал о создании каждого компонента в качестве библиотеки, а затем для каждого приложения, которое мне нужно построить, просто соедините части, как головоломки.

Будет ли это правильным способом? Или у кого-нибудь есть лучшие предложения?

Благодаря

ответ

4

Вы можете разработать проект «SDK» (например, в Facebook SDK), который включает в себя все компоненты (чат, каналы, профили, пользователей и т.д.), и вы можете использовать этот «SDK» в качестве библиотеки в других проектах. Используйте любые компоненты, которые вы хотите для этого конкретного приложения.

Этот подход сделает проект «SDK» удобным и легко обновляемым. Когда вы добавляете новую функцию (скажем, альбомы), вы можете интегрировать ее в проект «SDK» и использовать с существующими приложениями.

0

Разнообразная, модульная конструкция такого рода часто бывает полезна для создания более крупного программного обеспечения или программного обеспечения, предназначенного для решения широкого спектра непредвиденных будущих потребностей, особенно если вы смешиваете подходы снизу вверх.

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

Неловкая часть - это то, как сделать модули способными разговаривать друг с другом, когда это необходимо, чтобы вы могли эффективно объединить их вместе, как блоки lego. Это часто становится практической потребностью, так как сложность вашего программного обеспечения возрастает до такой степени, что его часто не хватит, чтобы просто иметь модули, полностью отделенные друг от друга как застрявшие острова и только один «главный» модуль для общения со всеми из них. Часто ваши потребности будут расти, чтобы они начали разговаривать друг с другом.

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

Если вы используете компилятор и статически типизированный язык, такой как C или C++, то становится намного сложнее сделать каждый модуль публиковать свой собственный уникальный интерфейс, который напрямую импортируется и используется другими. Там вы сталкиваетесь с необходимостью сделать заголовки доступными для всех модулей, беспокоиться о сохранении ABI при внесении изменений и т. Д. Большее количество изменений приведет к потере ABI и сломает другие модули в зависимости от конкретного интерфейса, поэтому мы склонны разрабатывать бит по-разному.

В таких случаях вы почти всегда хотите получить комплект программного обеспечения для разработки программного обеспечения, содержащий все абстрактные интерфейсы. Затем ваши модули реализуют эти интерфейсы и все еще общаются друг с другом, хотя и косвенно (плагин A разговаривает с интерфейсом SDK, который косвенно связывается с другим плагином, B).SDK устанавливает центральную штаб-квартиру связи, передавая сообщения от одного модуля к другому.

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