Czy jest miejsce na praktyczną, nowoczesną aplikację w Java of the Blackboard Pattern opisaną w „The Pragmatic Programmer” ? Czy jest jakaś konkretna biblioteka, która próbuje pomóc w realizacji tej koncepcji? Jaki jest ogólny konsensus w sprawie tego wzorca w obecnej społeczności oprogramowania (szczególnie Java)?
Choć pomysł jest intrygujący, mam wrażenie, że ta część książki może być nieaktualna.
Jeśli nie znasz tej koncepcji: http://flylib.com/books/en/1.315.1.55/1/
Odpowiedzi:
Moim zdaniem wiele współczesnych platform Dependency Injection jest mniej więcej implementacją wzorca tablicy dla architektury aplikacji. W szczególności Google Guice pozwala uzyskać określone wystąpienia obiektu z „Wtryskiwacza” (lub tablicy, jak chcesz to nazwać), dodając adnotacje do obiektów, które tworzy na wiele sposobów (w tym według nazwy przy użyciu adnotacji @Named) . Pozwala także różnym modułom współpracować przy udostępnianiu usług wtryskiwaczowi (tablicy).
Wiosna jest podobna, każdy kontekstowy plik XML (na przykład) może przyczyniać się i wykorzystywać obiekty z kontekstu Spring (tablica).
OSGi i rejestr usług jest kolejnym przykładem implementacji tablicy. Oto opis, w jaki sposób OSGi używa i obsługuje wzorzec tablicy do odwracania kontroli obsługi zdarzeń w systemach opartych na OSGi
Oto artykuł instruktażowy na temat związku między modułami dynamicznymi Spring, OSGi i wzorem tablicy (strona 51).
Z mojego doświadczenia wynika, że w szczególności Guice jest również bardzo wydajny do wspierania własnej implementacji wzoru tablicy. Jeśli większość twoich przedmiotów jest wstrzykiwana z Guice Injector (tablicy), łatwo jest wstrzyknąć je z każdą inną tablicą, jakiej potrzebuje dana klasa. Możesz więc uruchomić konkretną białą tablicę (np. Zawierającą fakty na temat Twojej domeny) za pomocą białej tablicy architektury aplikacji Guice. (Możesz zrobić podobnie z Springem, OSGi lub wieloma innymi, chociaż może nie tak bezpośrednio).
źródło
Cóż, wzorce projektowe są dokładnie takie; wzorce koncepcyjne do opracowania algorytmów, niekoniecznie implementacje wspomnianego wzoru, które działają w ogólnym przypadku. W związku z tym biblioteki, które zapewniają funkcjonalność „wbudowaną”, mogą wykorzystywać określony wzorzec, a nawet być świetnym przykładem użycia tego wzorca, ale nie są wzorcem. Nie potrzebujesz klasy StrategyProvider, którą można skonfigurować, aby spełnić wszelkie potrzeby, wystarczy zdefiniować zestaw klas i ustrukturyzować je tak, aby były zgodne ze wzorcem strategii.
Pomysł jest intrygujący. Wygląda na to, że sprawdziłby się dobrze w organizacji dokumentów, schemacie blokowym, sieciach społecznościowych itp. Jednak jego implementacja w każdym z tych scenariuszy byłaby zupełnie inna i chociaż nakładanie się może być niemożliwe, stworzenie jednej implementacji spełniającej wymagania wszystkich tych scenariuszy, bez wykazywania „efektu wewnętrznej platformy” (obiekt / biblioteka / aplikacja jest tak złożona i konfigurowalna, że w zasadzie staje się reimplementacją IDE użytego do jej zbudowania).
źródło
OpeBBS (Open BlackBoard System) wygląda jak implementacja Java obsługująca użycie wzorca tablicy.
Z ich strony internetowej :
Źródło, jar i javadoc można znaleźć na Sourceforge . Javadoc wydaje się wymieniać wiele klas, których można się spodziewać (Blackboard, BlackboardControl, ControlPlan, KnowledgeSource, ...).
Jedynym minusem jest to, że wydaje się, że najnowsza (i jedyna?) Wersja pochodzi z 2007 roku.
źródło