Poza Presentation-Abstraction-kontroli i innych wzorów , które są używane w Drupal rdzenia , czy są jakieś inne wzorce projektowe wyraźnie stosowane w bardziej popularnych przyczyniły modułów , takich jak widoki, CCK i funkcje?
Poza Presentation-Abstraction-kontroli i innych wzorów , które są używane w Drupal rdzenia , czy są jakieś inne wzorce projektowe wyraźnie stosowane w bardziej popularnych przyczyniły modułów , takich jak widoki, CCK i funkcje?
Odpowiedzi:
Jednym z nich jest sam rdzeń i wzorce narażone na wkład. - świetny napis Larry'ego Garfielda (Crell) można znaleźć w artykule Drupal Watchdog .
Obserwatorzy, goście i podglądacze
Drupal jest oparty na bliźniaczych wzorcach Obserwatora i Odwiedzającego, chociaż nie nazywa ich po imieniu. Zamiast tego nazywa je hakami.
hook_node_load(),hook_user_login()i tak dalej, są w istocie obserwatorami węzłów i użytkowników.hook_form_alter(),hook_node_view()i tak dalej, są w istocie gośćmi. Ponieważ Drupal nie rozróżnia tych dwóch, niektóre haczyki można prawdopodobnie uznać za oba wzory, ale zasada jest taka sama.Fabryki i polecenia
Istnieje kilka odmian wzorca fabrycznego, ale wszystkie sprowadzają się do tego samego pomysłu: jeden obiekt, klient pyta inny obiekt, fabrykę, o odpowiednią implementację logiki, ale nie dba o to, co to jest . To zależy od fabryki. Rozważ
db_insert()funkcję, której ważne bity pokazano poniżej:function db_insert($table, array $options = array()) { // ... return Database::getConnection($options['target'])->insert($table, $options); }
Database::getConnection()Metoda jest fabryka, która zwraca obiekt połączenia odpowiedniej dla tej strony.Doktor Drupal Zastrzyk zależności
W Drupal 6 system menu został wypatroszony i przepisany, aby był procesem wieloetapowym. Zaimplementowalibyśmy teraz to samo wywołanie zwrotne strony, jak to:
function example_menu() { $items['node/%node/example'] = array( 'page callback' => 'example_page', 'page arguments' => array(1), // ... ); return $items; } function example_page($node) { // Do useful stuff here. }W tej nowej konfiguracji router menu staje się bardziej złożony. Jednak w zamian strona zwrotna pobiera do niej węzeł, od którego zależy, to znaczy wstrzykuje do niej. To daje nam szereg korzyści.
Go for Broke (r)
Jednym z powszechnych podejść jest pewna odmiana pomysłu Brokera lub Mediatora. W tym projekcie obiekt nie żąda informacji od innego obiektu bezpośrednio. Zamiast tego prosi obiekt pośredni, który mógł zostać do niego wstrzyknięty, o złożenie takiego żądania w jego imieniu. Chociaż nadal oznacza to, że pierwszy obiekt musi aktywnie żądać informacji, jest jedynie ściśle powiązany z obiektem mediatora, a nie z niezliczoną liczbą innych obiektów, od których może potrzebować informacji. Oznacza to, że jeśli te inne systemy zmienią się, potrzebujemy jedynie zaktualizować mediatora, a nie każdy system, który go dotknie.