Apa Pola Desain Pabrik?

Apa Pola Desain Pabrik?
Pembaca seperti Anda membantu mendukung MUO. Saat Anda melakukan pembelian menggunakan tautan di situs kami, kami dapat memperoleh komisi afiliasi. Baca selengkapnya.

Pola desain pabrik (atau metode pabrik) berspesialisasi dalam delegasi dan enkapsulasi. Pola ini memungkinkan superclass untuk menunda instantiasi ke subclass. Ini karena kelas yang berisi pola metode pabrik utama adalah abstrak.





Versi asli dari metode pabrik mengasumsikan bentuk metode yang tidak diimplementasikan karena tidak mengetahui produk yang akan dibuatnya. Metode pabrik mungkin mengetahui bahwa ia sedang membuat suatu produk, tetapi ia tidak mengetahui karakteristik khusus dari produk yang akan dibuatnya. Pengetahuan ini hanya tersedia untuk masing-masing subclass. Oleh karena itu, tanggung jawab untuk mengimplementasikan metode pabrik dan membuat objek yang sesuai semata-mata merupakan subkelas.





Menerapkan Pola Desain Pabrik di Jawa

Artikel ini menggunakan contoh aplikasi pembuatan laporan umpan balik. Aplikasi ini menggunakan berbagai jenis umpan balik yang diterima perusahaan (untuk camilan baru) untuk membuat laporan khusus (menggunakan metode pabrik). Oleh karena itu, pola pabrik akan membuat umpan balik khusus (atau laporan umpan balik), dengan menggunakan kelas produk utama berikut sebagai basis:





 public abstract class Feedback { 
    
   private String reviewerName;
   private String reviewMessage;
   private int reviewRatings;
    
   public Feedback(String reviewerName, String reviewMessage, int reviewRatings) {
        this.reviewerName = reviewerName;
        this.reviewMessage = reviewMessage;
        this.reviewRatings = reviewRatings;
  }
    
  public String getReviewerName() {
      return reviewerName;
  }
  public void setReviewerName(String reviewerName) {
      this.reviewerName = reviewerName;
  }
  public String getReviewMessage() {
      return reviewMessage;
  }
  public void setReviewMessage(String reviewMessage) {
      this.reviewMessage = reviewMessage;
  }
  public int getReviewRatings() {
      return reviewRatings;
  }
  public void setReviewRatings(int reviewRatings) {
      this.reviewRatings = reviewRatings;
  }
}

Setiap umpan balik akan memiliki tiga properti wajib, nama peninjau, pesan ulasan, dan peringkat angka (dari satu hingga lima) untuk camilan baru. Berbagai jenis umpan balik yang akan diterima perusahaan akan datang dari salah satu dari tiga saluran:

Kelas Umpan Balik Email



apa yang dimaksud add on messenger
 public class EmailFeedback extends Feedback { 
    
  private String reviewerEmail;

  public EmailFeedback(String reviewerName, String reviewMessage, int reviewRatings, String reviewerEmail) {
     super(reviewerName, reviewMessage, reviewRatings);
     this.reviewerEmail = reviewerEmail;
  }
  public String getReviewerEmail() {
     return reviewerEmail;
  }
  public void setReviewerEmail(String reviewerEmail) {
     this.reviewerEmail = reviewerEmail;
  }
}

Kelas Umpan Balik Surat

 public class MailFeedback extends Feedback { 
    
   private String returnAddress;
    
   public MailFeedback(String reviewerName, String reviewMessage, int reviewRatings, String returnAddress) {
        super(reviewerName, reviewMessage, reviewRatings);
        this.returnAddress = returnAddress;
     }

   public String getReturnAddress() {
       return returnAddress;
     }

   public void setReturnAddress(String returnAddress) {
       this.returnAddress = returnAddress;
     }
}

Kelas Umpan Balik Media Sosial





 public class SocialMediaFeedback extends Feedback { 

   private String reviewerHandle;

   public SocialMediaFeedback(String reviewerName, String reviewMessage, int reviewRatings, String reviewerHandle) {
        super(reviewerName, reviewMessage, reviewRatings);
        this.reviewerHandle = reviewerHandle;
     }
    
   public String getReviewerHandle() {
       return reviewerHandle;
     }

   public void setReviewerHandle(String reviewerHandle) {
       this.reviewerHandle = reviewerHandle;
     }
}

Anda akan melihat bahwa setiap subkelas umpan balik memiliki properti unik. Artinya, Anda harus membuat laporan untuk setiap jenis umpan balik menggunakan setidaknya satu properti yang unik untuk jenis tersebut.

Pabrik Sederhana

Pabrik sederhana adalah pendekatan populer untuk menggunakan pola desain pabrik. Pendekatan ini memerlukan pengelompokan semua umpan balik (atau produk) yang berbeda dalam suatu metode (pabrik sederhana) dan memilih umpan balik yang sesuai berdasarkan parameter.





kesalahan tidak dapat menemukan atau memuat Java kelas utama
 public class FeedbackReportFactory { 
    
    public Feedback makeFeedback(String feedbackType) {
         Feedback feedback = null;
          
         if(feedbackType.equals("email")) {
               feedback = new EmailFeedback();
         }else if (feedbackType.equals("mail")) {
               feedback = new MailFeedback();
         }else if (feedbackType.equals("social")) {
               feedback = new SocialMediaFeedback();
         }
     return feedback;
     }
}

Namun, pendekatan pabrik yang sederhana bukanlah pola desain pabrik, juga bukan pola desain. Ini lebih seperti konsep desain.

Metode Pabrik

Metode pabrik adalah representasi sebenarnya dari pola desain. Menggunakan metode pabrik, yang direformasi FeedbackReportFactory kelas Jawa sekarang akan berisi kode berikut:

 public abstract class FeedbackReportFactory { 
    public abstract void makeFeedbackReport(Feedback feedback);
}

Anda dapat menentukan struktur pola desain pabrik dengan diagram kelas berikut:

  Diagram kelas metode pabrik

Dari diagram di atas Anda akan melihat bahwa kelas abstrak (atau antarmuka) akan berisi versi abstrak dari metode pabrik. Jadi, kelas pabrik beton yang memperluas kelas abstrak akan mengimplementasikan metode pabrik, menggunakan properti yang unik untuk produk yang ingin dibuatnya. Anda juga harus mencatat bahwa setiap kelas pabrik beton harus membuat satu atau lebih produk.

Aplikasi sampel memiliki tiga produk terkait tetapi unik. Setiap jenis umpan balik memiliki setidaknya satu properti unik. Jadi, aplikasi tersebut membutuhkan tiga pabrik beton untuk membangun setiap produk.

Pabrik Umpan Balik Email

 public class EmailFeedbackReport extends FeedbackReportFactory{ 
    
    EmailFeedback feedback;

    @Override
    public void makeFeedbackReport(Feedback feedback) {
          
        this.feedback = (EmailFeedback) feedback;
          
        System.out.println("\nReport For Feedback Via Email" +
                  "\nReviewer Name: " +this.feedback.getReviewerName() +
                  "\nFeedback: " + this.feedback.getReviewMessage() +
                  "\nRatings: " + this.feedback.getReviewRatings() +
                  "\nEmal Address: " + this.feedback.getReviewerEmail());
     }
}

Pabrik Umpan Balik Surat

 public class MailFeedbackReport extends FeedbackReportFactory { 
    MailFeedback feedback;

    @Override
    public void makeFeedbackReport(Feedback feedback) {
         this.feedback = (MailFeedback) feedback;
          
         System.out.println("\nReport For Feedback Via Mail" +
                     "\nReviewer Name: " +this.feedback.getReviewerName() +
                     "\nFeedback: " + this.feedback.getReviewMessage() +
                     "\nRatings: " + this.feedback.getReviewRatings() +
                     "\nMailing Address: " + this.feedback.getReturnAddress());
     }
}

Pabrik Umpan Balik Media Sosial

 public class SocialMediaFeedbackReport extends FeedbackReportFactory { 
    SocialMediaFeedback feedback;

    @Override
    public void makeFeedbackReport(Feedback feedback) {
        this.feedback = (SocialMediaFeedback) feedback;
                
        System.out.println("\nReport For Feedback Via Social Media" +
                      "\nReviewer Name: " + this.feedback.getReviewerName() +
                      "\nFeedback: " + this.feedback.getReviewMessage() +
                      "\nRatings: " + this.feedback.getReviewRatings() +
                      "\nReviewer Social Media Handle: " + this.feedback.getReviewerHandle());
           }
}

Menguji Aplikasi Sampel

Sekarang Anda dapat menggunakan masing-masing metode pabrik untuk membuat laporan miniatur tentang umpan balik yang diterima dari berbagai saluran. Kamu bisa menguji aplikasi menggunakan JUnit , atau Anda dapat membuat kelas driver:

 public class Main { 

   public static void main(String[] args) {
       Feedback feedback = new EmailFeedback("Nick", "Great product!", 5, "nick@email.com");
       Feedback feedback2 = new MailFeedback("john", "The product is good but not something I would buy regularly", 4, "first Street");
       Feedback feedback3 = new SocialMediaFeedback("Jane", "It's not for me", 2, "@janey");
          
       FeedbackReportFactory factory = new EmailFeedbackReport();
       FeedbackReportFactory factory2 = new MailFeedbackReport();
       FeedbackReportFactory factory3 = new SocialMediaFeedbackReport();
          
       factory.makeFeedbackReport(feedback);
       factory2.makeFeedbackReport(feedback2);
       factory3.makeFeedbackReport(feedback3);
   }

Kelas Utama di atas menggunakan masing-masing pabrik untuk membuat tiga laporan, menghasilkan keluaran berikut di konsol:

  Keluaran konsol metode pabrik

Keuntungan Menggunakan Pola Desain Pabrik

Pola desain pabrik mempromosikan fleksibilitas desain, di mana Anda menggunakan antarmuka (atau kelas abstrak) untuk membuat kelas konkret. Ini juga mempromosikan skalabilitas melalui polimorfisme, dengan mengizinkan kelas baru untuk mengimplementasikan antarmuka yang ada saat aplikasi berkembang.

Saat Anda menggunakan pola desain pabrik, Anda menggunakan dua prinsip desain penting: Terbuka-tertutup dan Pembalikan Kontrol (IoC).

game untuk dimainkan saat bosan online