Повторною темою в моїй розробці була використання або створення внутрішньої архітектури плагінів. Я бачив, як він наближався до багатьох способів - файли конфігурації (XML, .conf тощо), рамки успадкування, інформація про бази даних, бібліотеки та ін. З мого досвіду:
- База даних не є чудовим місцем для зберігання вашої конфігураційної інформації, особливо сумісно з даними
- Спроба цього за допомогою ієрархії спадкування вимагає кодування значень про плагіни, тобто архітектура плагінів не все така динамічна
- Файли конфігурації добре допомагають надавати просту інформацію, але не можуть обробляти складніші способи поведінки
- Бібліотеки, здається, працюють добре, але односторонні залежності потрібно ретельно створювати.
Оскільки я прагну вчитися в різних архітектурах, з якими працював, я також звертаюся до громади для пропозицій. Як ви реалізували архітектуру плагінів SOLID? Який був ваш найгірший провал (чи найгірший невдача, який ви бачили) Що б ви зробили, якби збиралися впроваджувати нову архітектуру плагінів? Який SDK або проект з відкритим кодом, з яким ви працювали, є найкращим прикладом хорошої архітектури?
Кілька прикладів, які я знаходив самостійно:
- Модуль Perl :: Plugable та IOC для введення залежності в Perl
- Різні рамки Spring (Java, .NET, Python) для введення залежності.
- Питання SO із переліком для Java (включаючи інтерфейси постачальника послуг )
- Питання ТА для C ++, що вказує на статтю доктора Доббса
- SO питання , що стосується ідеї конкретних плагін для ASP.NET MVC
Ці приклади, схоже, грають на різні мовні сили. Чи хороша архітектура плагінів обов'язково пов'язана з мовою? Краще використовувати інструменти для створення архітектури плагінів або робити це на власних наступних моделях?