Latest web development tutorials

pola pabrik abstrak

Pabrik Abstrak (Abstract Factory Pattern) dibuat sekitar super tanaman tanaman lain. Tanaman ini juga dikenal sebagai super pabrik lain pabrik. Jenis pola desain milik membuat skema, yang menyediakan cara terbaik untuk membuat objek.

Dalam pola pabrik abstrak, antarmuka yang bertanggung jawab untuk menciptakan tanaman terkait objek, tanpa secara eksplisit menentukan kelas mereka. Setiap objek yang dihasilkan, menurut pabrik dapat memberikan model yang pabrik.

pengenalan

Maksud: untuk membuat serangkaian antarmuka obyek terkait atau tergantung, tanpa menentukan kelas beton mereka.

Terutama untuk mengatasi: Masalah utama dari pilihan antarmuka.

Kapan menggunakan: produk Sistem memiliki lebih dari satu keluarga produk, dan satu-satunya sistem di mana sebuah keluarga produk konsumen.

Cara untuk memperbaiki: dalam keluarga produk dalam, menentukan beberapa produk.

Kode kunci: agregat beberapa produk sejenis di pabrik.

contoh aplikasi pekerjaan, untuk mengambil bagian dalam beberapa pertemuan, harus ada dua atau lebih set pakaian itu, katakanlah, pakaian bisnis (set lengkap, serangkaian produk tertentu), busana gaun (set lengkap, serangkaian produk tertentu), bahkan untuk keluarga Anda mungkin memiliki wanita bisnis, pria bisnis, fashion wanita, fashion pria, mereka juga set lengkap, yaitu serangkaian produk tertentu.Misalkan situasi (dalam kenyataannya tidak ada, atau yang lain, tidak komunisme, tetapi mendukung deskripsi pola pabrik abstrak), di rumah Anda, satu lemari (pabrik beton) hanya dapat menyimpan satu seperti pakaian (set lengkap, serangkaian produk tertentu), setiap kali Anda mengambil set pakaian dari lemari secara alami dibawa keluar. Dengan OO berpikir untuk memahami, semua lemari (pabrik beton) adalah lemari kelas (pabrik abstrak) satu, dan masing-masing satu set pakaian dan termasuk jaket tertentu (produk tertentu), celana (spesifik produk), ini sebenarnya kemeja tertentu jaket (produk abstrak), celana khusus adalah celana (produk abstrak lain).

Pro: Ketika sebuah keluarga produk lebih objek yang dirancang untuk bekerja bersama-sama, kita dapat memastikan bahwa klien selalu menggunakan hanya benda-benda keluarga produk yang sama.

Kekurangan: keluarga produk diperpanjang sangat sulit, untuk meningkatkan berbagai produk, baik dalam Creator abstrak kode Riga, tetapi juga untuk menambahkan kode tertentu dalam.

skenario penggunaan: 1, QQ untuk kulit, satu set perubahan bersama-sama.2, menghasilkan prosedur sistem operasi yang berbeda.

Catatan: Keluarga produk diperpanjang sulit, mudah untuk memperluas tingkat produk.

realisasi

Kami akan menciptakanBentukdanWarnaantarmuka antarmuka dan implementasi kelas entitas ini. Langkah berikutnya adalah untuk menciptakan sebuahAbstractFactorykelas pabrikabstrak.Kemudian menentukanShapeFactorykelas pabrik danColorFactory,dua kelas ini adalah pabrik diperluasAbstractFactory.Kemudian membuat kelasFactoryProducerpabrik pembuat /builder.

AbstractFactoryPatternDemo,kelas demonstrasi kami menggunakanFactoryProduceruntuk mendapatkan objekAbstractFactory.Melewati informasi bentukShape(LINGKARAN / PERSEGI PANJANG / KOTAK) untukAbstractFactory,perlu untuk mendapatkan jenis objek. Hal ini juga melewati informasi warnaWarna(RED / GREEN / BLUE) untukAbstractFactory,perlu untuk mendapatkan jenis objek.

pola pabrik abstrak diagram UML

Langkah 1

Antarmuka untuk membuat bentuk.

Shape.java

antarmuka publik Shape {
   kekosongan draw ();
}

Langkah 2

Membuat kelas entitas yang mengimplementasikan antarmuka.

Rectangle.java

public class Rectangle mengimplementasikan Shape {

   @ Override
   public void draw () {
      System.out.println ( "Di dalam Rectangle :: imbang () metode.");
   }
}

Square.java

public class persegi mengimplementasikan Shape {

   @ Override
   public void draw () {
      System.out.println ( "Di dalam Lapangan :: imbang () metode.");
   }
}

Circle.java

public class Lingkaran mengimplementasikan Shape {

   @ Override
   public void draw () {
      System.out.println ( "Di dalam Lingkaran :: imbang () metode.");
   }
}

Langkah 3

Buat sebuah antarmuka untuk warna.

Color.java

antarmuka publik Warna {
   kekosongan mengisi ();
}

Langkah 4

Membuat kelas entitas yang mengimplementasikan antarmuka.

Red.java

public class Red mengimplementasikan Warna {

   @ Override
   public void mengisi () {
      System.out.println ( "Di dalam Red :: fill () metode.");
   }
}

Green.java

public class Hijau mengimplementasikan Warna {

   @ Override
   public void mengisi () {
      System.out.println ( "Di dalam Hijau :: fill () metode.");
   }
}

Blue.java

public class Biru mengimplementasikan Warna {

   @ Override
   public void mengisi () {
      System.out.println ( "Di dalam Biru :: fill () metode.");
   }
}

Langkah 5

Buat kelas abstrak untuk Warna dan Shape objek untuk mendapatkan pabrik.

AbstractFactory.java

kelas abstrak publik AbstractFactory {
   abstrak Warna getColor (String warna);
   Bentuk abstrak getShape (String bentuk);
}

Langkah 6

Buat diperpanjang kelas pabrik AbstractFactory, entitas generasi objek kelas berdasarkan informasi yang diberikan.

ShapeFactory.java

public class ShapeFactory meluas AbstractFactory {
	
   @ Override
   Bentuk umum getShape (String shapeType) {
      jika (shapeType == null) {
         kembali null;
      }		
      jika (shapeType.equalsIgnoreCase ( "CIRCLE")) {
         kembali Lingkaran baru ();
      } Lain jika (shapeType.equalsIgnoreCase ( "PERSEGI PANJANG")) {
         kembali Rectangle baru ();
      } Lain jika (shapeType.equalsIgnoreCase ( "KOTAK")) {
         kembali persegi baru ();
      }
      kembali null;
   }
   
   @ Override
   Warna getColor (warna String) {
      kembali null;
   }
}

ColorFactory.java

public class ColorFactory meluas AbstractFactory {
	
   @ Override
   Bentuk umum getShape (String shapeType) {
      kembali null;
   }
   
   @ Override
   Warna getColor (warna String) {
      jika (warna == null) {
         kembali null;
      }		
      jika (color.equalsIgnoreCase ( "RED")) {
         kembali Red baru ();
      } Lain jika (color.equalsIgnoreCase ( "GREEN")) {
         kembali hijau baru ();
      } Lain jika (color.equalsIgnoreCase ( "BIRU")) {
         kembali Biru baru ();
      }
      kembali null;
   }
}

Langkah 7

Membuat kategori pabrik pembuat / builder, melewati bentuk atau warna informasi untuk mendapatkan pabrik.

FactoryProducer.java

public class FactoryProducer {
   public static AbstractFactory getFactory (String pilihan) {
      jika (choice.equalsIgnoreCase ( "SHAPE")) {
         kembali ShapeFactory baru ();
      } Lain jika (choice.equalsIgnoreCase ( "COLOR")) {
         kembali ColorFactory baru ();
      }
      kembali null;
   }
}

Langkah 8

Gunakan FactoryProducer untuk mendapatkan AbstractFactory, untuk mendapatkan objek dari kelas dengan melewati informasi entitas jenis.

AbstractFactoryPatternDemo.java

public class AbstractFactoryPatternDemo {
   public static void main (String [] args) {

      // Dapatkan bentuk pabrik AbstractFactory shapeFactory = FactoryProducer.getFactory ( "SHAPE");

      // Dapatkan objek bentuk lingkaran Shape shape1 = shapeFactory.getShape ( "CIRCLE");

      // Panggil metode menarik dari shape1.draw Circle ();

      // Dapatkan objek bentuk Rectangle Shape shape2 = shapeFactory.getShape ( "PERSEGI PANJANG");

      // Panggil metode menarik dari shape2.draw Rectangle ();
      
      // Dapatkan bentuk objek Shape Square, shape3 = shapeFactory.getShape ( "KOTAK");

      // Panggil metode imbang Lapangan shape3.draw ();

      // Dapatkan warna Pabrik AbstractFactory colorFactory = FactoryProducer.getFactory ( "COLOR");

      // Dapatkan warna objek adalah warna merah color1 = colorFactory.getColor ( "RED");

      // Panggil metode mengisi Red color1.fill ();

      // Dapatkan warna objek Hijau Warna COLOR2 = colorFactory.getColor ( "Green");

      // Panggil mengisi Green metode color2.fill ();

      // Dapatkan warna objek Warna Biru color3 = colorFactory.getColor ( "BIRU");

      // Panggil metode mengisi Biru color3.fill ();
   }
}

Langkah 9

Verifikasi output.

Di dalam Lingkaran :: imbang () metode.
Di dalam Rectangle :: imbang () metode.
Di dalam persegi :: imbang () metode.
Di dalam Red :: fill () metode.
Dalam metode Hijau :: fill ().
Dalam Biru :: fill () metode.