1. Pengantar model pabrik sederhana
Mode pabrik sederhana, juga dikenal sebagai "Mode Metode Pabrik Statis". Ini milik "Mode Buat" (pola untuk membuat objek) dan merupakan implementasi khusus dari pola "metode pabrik".
Biasanya, kami menggunakan pola pabrik sederhana untuk membuat kelas. Misalnya, mendapatkan objek kumpulan utas dicapai melalui mode pabrik sederhana. Diagram strukturnya adalah sebagai berikut:
Pabrik: Pabrik adalah inti dari model pabrik sederhana dan menyediakan antarmuka eksternal. Ketika klien atau program lain ingin mendapatkan objek produk, mereka diperoleh melalui antarmuka pabrik.
Produk Abstrak: Produk abstrak diabstraksi oleh (banyak) produk yang berbeda. Produk dapat berupa antarmuka atau kelas abstrak.
Produk spesifik: Objek produk yang dikembalikan di pabrik sebenarnya dibuat melalui Concreteproduct.
2. Model kode pola pabrik sederhana
Public Class Factory {Public Static Product newInstance () {return new ConcreteProduct (); }} Produk abstrak publik {} kelas publik Concreteproduct memperluas produk {public concreteProduct () {}} Diagram kelas model
3. Aplikasi Praktis Model Pabrik Sederhana
Ketika kami menulis servlet untuk menangani permintaan klien, kami sering menangani beberapa logika bisnis dalam satu servlet, misalnya:
DOPOST void yang dilindungi (permintaan httpservletRequest, respons httpservletResponse) {string flag = request.getParameter ("flag"); if (flag.equals ("service1")) {service1 (); } else if (flag.equals ("service2")) {service2 (); } ...}Di atas adalah metode umum dari servlet kami untuk menangani logika multi-bisnis, dan menulis banyak pernyataan lagi. Cara yang lebih baik adalah memisahkan distribusi yang diminta dari servlet, sehingga servlet hanya menangani logika bisnis. Kami menganggap berbagai servlet yang diminta sebagai kelas produk. javax.servlet.httpservlet adalah kelas induk produk, dan javax.servlet.servlet adalah antarmuka produk. Dengan cara ini, kami mendefinisikan servletFactory, parsing permintaan URL di filter dan serahkan ke servletFactory untuk diproses. Ini adalah aplikasi pabrik sederhana yang khas.
@WebFilter ("/TransRequest") Public Class TransRequest mengimplementasikan filter {private string servletName; @Override public void dofilter (permintaan servletRequest, respons servletResponse, rantai filterchain) melempar ioException, servletException {httpservletRequest myRequest = (httpservletRequest) permintaan; // Dapatkan nama servlet yang diminta, di sini kami setuju bahwa permintaan tersebut dalam bentuk/servletname string nama [] = myRequest.getRequesturi (). Trim (). Split ("/"); servletname = nama [2]; if (servletname! = null) {// Berikut ini adalah dua contoh paling khas dari pabrik sederhana servlet servlet = servletfactory.createServer (servletname); servlet.service (permintaan, respons); } else chain.dofilter (permintaan, respons); } Setiap kali kami meminta permintaan, kami menggunakan pabrik untuk menghasilkan servlet, yang dapat menghindari mengkonfigurasi sejumlah besar informasi jalur servlet di XML. Dan ini juga akan membuat logika lebih jelas, dan servlet hanya menangani bisnis di tingkat bisnis.
Kategori pabrik adalah sebagai berikut:
Public Class ServletFactory {public static servlet createSerVlet (string servletName) melempar servletException {if (servletname.equals ("servletname1")) {return new service1 (); } lain jika (servletname.equals ("servletname2")) {return new service2 (); } else {lempar servletException baru ("tidak ada servlet seperti itu"); }}}Meskipun kelas pabrik di atas tidak mengesampingkan rumit jika lain, gagasan menggunakan pabrik sederhana masih memecahkan beberapa masalah. Pabrik sederhana adalah pola desain yang sangat sederhana yang tidak dapat dianggap sebagai pola desain, dan masalah yang dipecahkan juga terbatas. Distribusi permintaan di atas telah diterapkan. Misalnya, Struts2, tentu saja, kerangka kerja bukanlah pabrik yang sederhana.
4. Ringkasan
Model pabrik yang sederhana, untuk menyimpulkan, adalah kelas pabrik, antarmuka produk (pada kenyataannya, juga bisa berupa kelas abstrak, atau bahkan kelas orang tua biasa) dan sekelompok produk tertentu yang mengimplementasikan antarmuka produk. Kelas pabrik ini menciptakan kelas implementasi spesifik berdasarkan parameter yang dilewatkan dan mengubahnya menjadi antarmuka sebagai hasilnya.