Rumah  >  Artikel  >  Java  >  Memahami Corak Reka Bentuk Kaedah Kilang

Memahami Corak Reka Bentuk Kaedah Kilang

王林
王林asal
2024-07-23 17:37:20677semak imbas

Understanding the Factory Method Design Pattern

Memahami Corak Reka Bentuk Kaedah Kilang

Masalah

Corak Kaedah Kilang menangani keperluan untuk mencipta objek tanpa menyatakan kelas objek yang tepat yang akan dibuat. Ini berguna apabila anda mempunyai berbilang subkelas superclass dan ingin mewakilkan penciptaan objek kepada subkelas tertentu berdasarkan syarat atau parameter tertentu.

Penyelesaian

Corak Kaedah Kilang menyediakan antara muka untuk mencipta objek dalam kelas super, tetapi membenarkan subkelas mengubah jenis objek yang akan dibuat. Ini menggalakkan gandingan longgar dengan memastikan kod pelanggan berinteraksi dengan antara muka kilang dan bukannya kelas konkrit secara langsung.

Kebaikan dan Keburukan

Kebaikan

  • Decouples Kod Pelanggan: Membenarkan kod pelanggan berfungsi dengan antara muka atau kelas abstrak untuk penciptaan objek, menggalakkan fleksibiliti dan kebolehselenggaraan.
  • Menggalakkan Penggunaan Semula Kod: Subkelas boleh menggunakan semula logik penciptaan objek yang sama yang ditakrifkan dalam kaedah kilang.
  • Menyokong Prinsip Terbuka-Tutup: Subkelas baharu boleh ditambah tanpa mengubah suai kod klien sedia ada, mematuhi Prinsip Terbuka-Tutup.

Kontra

  • Kerumitan: Memperkenalkan kerumitan tambahan dengan pengenalan berbilang subkelas dan kaedah kilang.
  • Memerlukan Subkelas: Setiap jenis produk memerlukan subkelasnya sendiri, yang berpotensi membawa kepada percambahan kelas dalam pangkalan kod.
  • Tidak Sesuai untuk Kes Mudah: Penggunaan berlebihan corak Kaedah Kilang dalam senario mudah boleh membawa kepada abstraksi dan kerumitan yang tidak perlu.

Contoh Aplikasi Dunia Sebenar

Contoh praktikal corak Kaedah Kilang adalah dalam rangka kerja untuk mencipta dokumen. Bergantung pada jenis dokumen (cth., PDF, HTML), kilang dokumen yang sepadan mencipta objek dokumen dengan pemformatan dan ciri yang sesuai.

Contoh Kod dalam Java

Corak Kaedah Kilang dalam kod

java
// Product interface
public interface Document {
    void open();
    void close();
}

// Concrete Product 1
public class PDFDocument implements Document {
    @Override
    public void open() {
        System.out.println("Opening PDF document");
    }

    @Override
    public void close() {
        System.out.println("Closing PDF document");
    }
}

// Concrete Product 2
public class HTMLDocument implements Document {
    @Override
    public void open() {
        System.out.println("Opening HTML document");
    }

    @Override
    public void close() {
        System.out.println("Closing HTML document");
    }
}

// Creator interface
public interface DocumentFactory {
    Document createDocument();
}

// Concrete Creator 1
public class PDFDocumentFactory implements DocumentFactory {
    @Override
    public Document createDocument() {
        return new PDFDocument();
    }
}

// Concrete Creator 2
public class HTMLDocumentFactory implements DocumentFactory {
    @Override
    public Document createDocument() {
        return new HTMLDocument();
    }
}

// Client code
public class Client {
    public static void main(String[] args) {
        DocumentFactory factory1 = new PDFDocumentFactory();
        Document pdfDocument = factory1.createDocument();
        pdfDocument.open();
        pdfDocument.close();

        DocumentFactory factory2 = new HTMLDocumentFactory();
        Document htmlDocument = factory2.createDocument();
        htmlDocument.open();
        htmlDocument.close();
    }
}

Atas ialah kandungan terperinci Memahami Corak Reka Bentuk Kaedah Kilang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn