Rumah > Java > javaTutorial > teks badan

Memahami Corak Reka Bentuk Kaedah Kilang

王林
Lepaskan: 2024-07-23 17:37:20
asal
711 orang telah melayarinya

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();
    }
}
Salin selepas log masuk

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

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!