Apa saja pola desain yang ditemukan dalam modul kontribusi terkemuka?

10

Selain kontrol Presentasi-abstraksi dan pola lain yang digunakan dalam inti Drupal , apakah ada pola desain lain yang secara jelas digunakan dalam modul kontribusi yang lebih populer seperti Views, CCK, dan Fitur?

Matt V.
sumber
2
Seperti yang dilaporkan dalam faq , "Anda seharusnya hanya mengajukan pertanyaan praktis, yang dapat dijawab berdasarkan masalah aktual yang Anda hadapi. Pertanyaan-pertanyaan yang terbuka dan tidak jelas mengurangi kegunaan situs kami dan mendorong pertanyaan lain dari halaman depan."
kiamlaluno
1
ini mungkin menjadi topik wiki komunitas yang bagus
Chaulky
Wiki Komunitas tidak digunakan lagi untuk pertanyaan yang tidak dapat diterima, atau yang merupakan batas. Lihat Masa Depan Komunitas Wiki .
kiamlaluno
2
Di sisi lain, saya pikir ini adalah topik yang menarik. Saran untuk pertanyaan yang lebih baik: "Apakah ada pola desain yang dapat menyelesaikan masalah X?". Karena itulah pola desain untuk, memecahkan masalah, mereka tidak boleh digunakan hanya untuk digunakan.
Berdir
1
@kiamlaluno, saya berpendapat bahwa pertanyaannya tidak dapat dijawab, cerewet, atau tidak praktis, meskipun mungkin bisa dibilang terbuka. Tujuan saya dalam mengajukan pertanyaan adalah untuk mendapatkan pemahaman yang lebih baik tentang bagaimana pola desain digunakan, dalam kode yang agak saya kenal.
Matt V.

Jawaban:

10

Satu tempat untuk memulai adalah dengan inti itu sendiri dan pola-pola yang terpapar contrib. - penulisan yang bagus oleh Larry Garfield (Crell) dapat ditemukan di artikel Drupal Watchdog .

Pengamat, pengunjung, dan pengintip

Drupal sebenarnya dibangun di atas pola kembar Observer dan Visitor, meskipun tidak memanggil mereka dengan nama. Sebaliknya, itu menyebut mereka kait. hook_node_load(),, hook_user_login()dan sebagainya adalah, pada dasarnya, pengamat pada node dan pengguna. hook_form_alter(),, hook_node_view()dan sebagainya, pada dasarnya, pengunjung. Karena Drupal tidak membedakan keduanya, beberapa kaitan bisa dianggap sebagai kedua pola tetapi prinsipnya sama.

Pabrik dan perintah

Ada beberapa variasi pada pola Pabrik, tetapi semuanya bermuara pada ide yang sama: Satu objek, klien, meminta objek lain, sebuah pabrik, untuk implementasi yang sesuai dari sepotong logika, tetapi tidak peduli mana itu. . Terserah pabrik untuk memutuskan. Pertimbangkan db_insert()fungsinya, bit-bit penting yang ditunjukkan di bawah ini:

   function db_insert($table, array $options = array()) {
       // ...
       return Database::getConnection($options['target'])->insert($table, $options);
     }

The Database::getConnection()Metode adalah pabrik yang mengembalikan koneksi objek yang sesuai untuk situs ini.

Injeksi Ketergantungan Dokter Drupal

Dalam Drupal 6, sistem menu dimusnahkan dan ditulis ulang menjadi proses multi-langkah. Kami sekarang akan menerapkan panggilan balik halaman yang sama seperti ini:

   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.
     }

Dalam pengaturan baru ini, router menu menjadi lebih kompleks. Sebagai imbalannya, bagaimanapun, callback halaman mendapatkan node yang tergantung padanya, yaitu disuntikkan ke dalamnya. Itu memberi kita sejumlah manfaat.

Go for Broke (r)

Salah satu pendekatan umum adalah beberapa variasi pada gagasan Broker atau Mediator. Dalam desain ini, suatu objek tidak meminta informasi dari objek lain secara langsung. Sebaliknya ia meminta objek perantara, yang mungkin telah disuntikkan ke dalamnya, untuk membuat permintaan seperti itu atas namanya. Meskipun masih berarti objek pertama harus secara aktif meminta informasi, ia hanya digabungkan secara erat dengan objek mediator dan tidak dengan segudang objek lain yang mungkin perlu dimintanya informasi. Itu berarti jika sistem lain itu berubah kita hanya perlu memperbarui mediator, tidak setiap sistem yang menyentuhnya.

kiamlaluno
sumber