Powtarzającym się tematem w moich pracach programistycznych było wykorzystanie lub stworzenie własnej architektury wtyczek. Widziałem, że podchodzono do tego na wiele sposobów - pliki konfiguracyjne (XML, .conf itd.), Struktury dziedziczenia, informacje o bazach danych, biblioteki i inne. Z mojego doświadczenia:
- Baza danych nie jest dobrym miejscem do przechowywania informacji o konfiguracji, zwłaszcza w połączeniu z danymi
- Próba tego z hierarchią dziedziczenia wymaga wiedzy na temat wtyczek do zakodowania, co oznacza, że architektura wtyczek nie jest aż tak dynamiczna
- Pliki konfiguracyjne dobrze sprawdzają się w dostarczaniu prostych informacji, ale nie obsługują bardziej złożonych zachowań
- Wydaje się, że biblioteki działają dobrze, ale zależności jednokierunkowe muszą być starannie tworzone.
Kiedy staram się uczyć z różnych architektur, z którymi pracowałem, szukam także sugestii społeczności. W jaki sposób zaimplementowałeś architekturę wtyczek SOLID? Jaka była Twoja najgorsza porażka (lub najgorsza porażka, jaką widziałeś)? Co byś zrobił, gdybyś miał zaimplementować nową architekturę wtyczek? Który projekt SDK lub open source, z którym pracowałeś, ma najlepszy przykład dobrej architektury?
Kilka przykładów, które sam znalazłem:
- Perl's Module :: Plugable i IOC do iniekcji zależności w Perlu
- Różne struktury Spring (Java, .NET, Python) do wstrzykiwania zależności.
- Pytanie SO z listą for Java (łącznie z interfejsami Service Provider )
- Pytanie SO dla C ++ wskazując na artykuł Dr. Dobbs
- SO pytanie dotyczące pomysłu specyficzny plugin dla ASP.NET MVC
Te przykłady wydają się grać dla różnych mocnych stron języka. Czy dobra architektura wtyczki jest koniecznie powiązana z językiem? Czy najlepiej jest użyć narzędzi do tworzenia architektury wtyczek, czy zrobić to na własnych, następujących modelach?