Factory Method/Metode pabrik

chmood
   Mendefinisikan interface untuk membuat sebuah objek, tapi biarkan subclass memutuskan mana kelas untuk instantiate. Pabrik Metode memungkinkan sebuah Instansiasi kelas defer untuk subclass.
Mendefinisikan "virtual" konstruktor.
Operator baru dianggap berbahaya.
Masalah
Kerangka perlu standarisasi model arsitektur untuk berbagai aplikasi, tetapi memungkinkan untuk aplikasi individu untuk menentukan objek domain sendiri dan menyediakan Instansiasi mereka.

   Pabrik Metode adalah untuk membuat objek sebagai Metode Template adalah untuk menerapkan algoritma. Sebuah superclass menentukan semua perilaku standar dan generik (menggunakan murni virtual "penampung" untuk langkah-langkah penciptaan), dan kemudian delegasi rincian penciptaan untuk subclass yang disediakan oleh klien.

Metode pabrik membuat desain yang lebih disesuaikan dan hanya sedikit lebih rumit. Pola desain lainnya memerlukan kelas baru, sedangkan Pabrik Metode hanya membutuhkan operasi baru.

Orang sering menggunakan Pabrik Metode sebagai cara standar untuk membuat objek; tetapi tidak diperlukan jika: kelas yang dipakai tidak pernah berubah, atau Instansiasi berlangsung dalam sebuah operasi yang subclass dapat dengan mudah menimpa (seperti operasi inisialisasi).

Pabrik Metode ini mirip dengan Abstrak pabrik tapi tanpa penekanan pada keluarga.

Metode pabrik secara rutin ditentukan oleh kerangka kerja arsitektur, dan kemudian dilaksanakan oleh pengguna dari kerangka.

Struktur

   Pelaksanaan Pabrik Metode dibahas dalam Gang of Four (bawah) sebagian besar tumpang tindih dengan yang dari Abstrak Pabrik. Untuk itu, presentasi dalam bab ini berfokus pada pendekatan yang telah menjadi populer sejak.


   Definisi semakin populer metode pabrik adalah: metode statis dari kelas yang mengembalikan sebuah objek dari jenis kelas '. Tapi tidak seperti konstruktor, objek yang sebenarnya itu kembali mungkin sebuah contoh dari subclass. Tidak seperti konstruktor, objek yang ada mungkin digunakan kembali, bukannya objek baru dibuat. Tidak seperti konstruktor, metode pabrik dapat memiliki nama yang berbeda dan lebih deskriptif (misalnya Color.make_RGB_color (mengapung merah, hijau mengambang, mengapung biru) dan Color.make_HSB_color (float hue, saturation float, kecerahan float)

Klien benar-benar dipisahkan dari rincian pelaksanaan kelas turunan. Penciptaan polimorfik sekarang mungkin.

Contoh
   Pabrik Metode mendefinisikan sebuah antarmuka untuk menciptakan objek, tetapi memungkinkan subclass memutuskan mana kelas untuk instantiate. Menekan injeksi molding menunjukkan pola ini. Produsen mainan proses molding plastik bubuk plastik, dan menyuntikkan plastik ke dalam cetakan dari bentuk yang diinginkan. Kelas mainan (mobil, action figure, dll) ditentukan oleh cetakan,



   Jika Anda memiliki hirarki warisan yang latihan polimorfisme, pertimbangkan untuk menambahkan kemampuan penciptaan polimorfik dengan mendefinisikan metode pabrik statis di kelas dasar.
Desain argumen untuk metode pabrik. Apa kualitas atau karakteristik yang perlu dan cukup untuk mengidentifikasi kelas turunan yang benar untuk instantiate?
Pertimbangkan merancang internal "objek pool" yang akan memungkinkan objek untuk digunakan kembali bukannya dibuat dari awal.
Pertimbangkan untuk membuat semua konstruktor pribadi atau dilindungi.
Aturan praktis
Kelas Pabrik abstrak seringkali dilaksanakan dengan Metode Pabrik, tetapi mereka dapat diimplementasikan menggunakan Prototype.
Metode pabrik biasanya disebut dalam Metode Template.
Pabrik Metode: penciptaan melalui warisan. Prototype: penciptaan melalui delegasi.
Seringkali, desain mulai menggunakan Metode Pabrik (kurang rumit, lebih disesuaikan, subclass berkembang biak) dan berkembang ke arah Abstrak Pabrik, Prototype, atau Builder (lebih fleksibel, lebih kompleks) sebagai desainer menemukan di mana lebih fleksibel diperlukan.
Prototipe tidak memerlukan subclassing, tetapi tidak membutuhkan operasi Initialize. Metode pabrik membutuhkan subclassing, tapi tidak memerlukan inisialisasi.
Keuntungan dari Pabrik Metode adalah bahwa hal itu dapat kembali contoh yang sama beberapa kali, atau dapat kembali subclass daripada sebuah objek dari jenis yang tepat.
Beberapa pendukung Pabrik Metode merekomendasikan bahwa sebagai masalah desain bahasa (atau gagal itu, sebagai masalah gaya) benar-benar semua konstruktor harus pribadi atau dilindungi. Ini bisnis tidak ada orang lain apakah kelas memproduksi objek baru atau mendaur ulang yang lama.
Operator baru dianggap berbahaya. Ada perbedaan antara meminta obyek dan menciptakan satu. Operator baru selalu menciptakan objek, dan gagal untuk merangkum objek penciptaan. Metode Pabrik memaksa enkapsulasi itu, dan memungkinkan sebuah objek yang akan diminta tanpa kopling inextricable ke tindakan penciptaan



Komentar