Rumah Java javaTutorial Analisis mendalam corak kilang Java: pelaksanaan tiga corak reka bentuk ciptaan

Analisis mendalam corak kilang Java: pelaksanaan tiga corak reka bentuk ciptaan

Dec 28, 2023 am 09:47 AM
Tiga cara untuk mencapai corak kilang java Corak reka bentuk ciptaan

Analisis mendalam corak kilang Java: pelaksanaan tiga corak reka bentuk ciptaan

Corak Kilang ialah corak reka bentuk ciptaan yang biasa digunakan yang menyediakan cara untuk merangkum penciptaan objek untuk fleksibiliti dan kebolehselenggaraan yang lebih tinggi. Dalam pengaturcaraan Java, corak kilang sering digunakan untuk mencipta objek daripada jenis yang berbeza tanpa mendedahkan logik khusus untuk mencipta objek.

Artikel ini akan memberikan analisis mendalam tentang corak kilang Java dan membincangkan tiga kaedah pelaksanaan corak kilang.

1. Corak Kilang Mudah
Corak Kilang Mudah adalah salah satu corak kilang yang paling asas dan biasa. Ia melaksanakan penciptaan objek melalui kelas kilang, dan merangkum proses penciptaan objek tertentu dalam kelas kilang.

Berikut ialah contoh kod corak kilang ringkas:

public class SimpleFactory {
    public static Product createProduct(String type) {
        switch (type) {
            case "A":
                return new ConcreteProductA();
            case "B":
                return new ConcreteProductB();
            default:
                throw new IllegalArgumentException("Invalid product type: " + type);
        }
    }
}

public interface Product {
    void operation();
}

public class ConcreteProductA implements Product {
    @Override
    public void operation() {
        System.out.println("This is product A.");
    }
}

public class ConcreteProductB implements Product {
    @Override
    public void operation() {
        System.out.println("This is product B.");
    }
}

// Client
public class Main {
    public static void main(String[] args) {
        Product productA = SimpleFactory.createProduct("A");
        Product productB = SimpleFactory.createProduct("B");

        productA.operation();
        productB.operation();
    }
}
Salin selepas log masuk

Dalam kod di atas, SimpleFactory ialah kelas kilang yang mencipta objek produk tertentu berdasarkan jenis parameter yang diluluskan. Kemudian, pelanggan mendapat objek produk yang diperlukan dengan memanggil kaedah statik createProduct of SimpleFactory. Dengan menggunakan corak kilang, pelanggan boleh memisahkan proses penciptaan objek produk tertentu daripada kod pelanggan, memberikan fleksibiliti dan kebolehselenggaraan yang lebih tinggi.

Tetapi keburukan corak kilang yang ringkas ialah jika anda ingin menambah jenis produk baru, anda perlu mengubah suai kod kelas kilang. Ini melanggar "prinsip terbuka-tertutup", yang terbuka kepada sambungan dan tertutup kepada pengubahsuaian.

2. Corak Kaedah Kilang
Corak Kaedah Kilang ialah corak kilang yang lebih fleksibel Ia mentakrifkan antara muka kilang yang khusus dan membolehkan kelas kilang tertentu melaksanakan antara muka untuk mencipta pelbagai jenis objek.

Berikut ialah contoh kod corak kaedah kilang:

public interface Factory {
    Product createProduct();
}

public class ConcreteFactoryA implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

public class ConcreteFactoryB implements Factory {
    @Override
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

// Client
public class Main {
    public static void main(String[] args) {
        Factory factoryA = new ConcreteFactoryA();
        Factory factoryB = new ConcreteFactoryB();

        Product productA = factoryA.createProduct();
        Product productB = factoryB.createProduct();

        productA.operation();
        productB.operation();
    }
}
Salin selepas log masuk

Dalam kod di atas, Kilang ialah antara muka kilang abstrak yang mentakrifkan kaedah untuk mencipta objek produk. ConcreteFactoryA dan ConcreteFactoryB ialah kelas kilang tertentu, masing-masing bertanggungjawab untuk mencipta objek produk tertentu. Pelanggan memperoleh objek produk yang diperlukan dengan membuat instance kelas kilang tertentu dan kemudian memanggil kaedah createProductnya.

Kelebihan corak kaedah kilang berbanding corak kilang yang ringkas ialah dengan memperkenalkan antara muka kilang dan kelas kilang tertentu, sistem boleh dikembangkan dan jenis produk baharu boleh ditambah tanpa mengubah kod sedia ada. Pada masa yang sama, corak kaedah kilang juga memenuhi "prinsip terbuka-tertutup".

3. Corak Kilang Abstrak
Corak Kilang Abstrak ialah corak reka bentuk ciptaan yang menyediakan antara muka untuk mencipta satu siri objek yang berkaitan atau saling bergantung tanpa menentukan kelas tertentu.

Berikut ialah contoh kod corak kilang abstrak:

public interface AbstractFactory {
    ProductA createProductA();
    ProductB createProductB();
}

public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ConcreteProductA1();
    }

    @Override
    public ProductB createProductB() {
        return new ConcreteProductB1();
    }
}

public class ConcreteFactory2 implements AbstractFactory {
    @Override
    public ProductA createProductA() {
        return new ConcreteProductA2();
    }

    @Override
    public ProductB createProductB() {
        return new ConcreteProductB2();
    }
}

public interface ProductA {
    void operationA();
}

public interface ProductB {
    void operationB();
}

public class ConcreteProductA1 implements ProductA {
    @Override
    public void operationA() {
        System.out.println("This is product A1.");
    }
}

public class ConcreteProductA2 implements ProductA {
    @Override
    public void operationA() {
        System.out.println("This is product A2.");
    }
}

public class ConcreteProductB1 implements ProductB {
    @Override
    public void operationB() {
        System.out.println("This is product B1.");
    }
}

public class ConcreteProductB2 implements ProductB {
    @Override
    public void operationB() {
        System.out.println("This is product B2.");
    }
}

// Client
public class Main {
    public static void main(String[] args) {
        AbstractFactory factory1 = new ConcreteFactory1();
        AbstractFactory factory2 = new ConcreteFactory2();

        ProductA productA1 = factory1.createProductA();
        ProductB productB1 = factory1.createProductB();

        ProductA productA2 = factory2.createProductA();
        ProductB productB2 = factory2.createProductB();

        productA1.operationA();
        productB1.operationB();

        productA2.operationA();
        productB2.operationB();
    }
}
Salin selepas log masuk

Dalam kod di atas, AbstractFactory ialah antara muka kilang abstrak yang mentakrifkan satu siri kaedah untuk mencipta objek produk. ConcreteFactory1 dan ConcreteFactory2 ialah kelas kilang khusus, masing-masing bertanggungjawab untuk mencipta satu siri objek produk yang berkaitan. ProductA dan ProductB ialah antara muka produk abstrak yang mentakrifkan kaedah objek produk. ConcreteProductA1, ConcreteProductA2, ConcreteProductB1 dan ConcreteProductB2 ialah kelas produk tertentu, yang masing-masing bertanggungjawab untuk melaksanakan kaedah yang ditakrifkan oleh antara muka produk abstrak.

Kelebihan corak kilang abstrak ialah kod penciptaan produk boleh disembunyikan dalam kelas kilang tertentu Pelanggan hanya perlu mengambil berat tentang antara muka kilang abstrak dan tidak perlu mengambil berat tentang kilang dan pelaksanaan produk tertentu. Pada masa yang sama, corak kilang abstrak juga memenuhi "prinsip terbuka-tertutup".

Ringkasan
Corak kilang ialah corak reka bentuk biasa untuk mencipta objek dan digunakan secara meluas dalam pengaturcaraan Java. Artikel ini menganalisis tiga kaedah pelaksanaan corak kilang: corak kilang mudah, corak kaedah kilang dan corak kilang abstrak. Kaedah pelaksanaan yang berbeza sesuai untuk senario yang berbeza, dan model kilang yang sesuai boleh dipilih mengikut keperluan khusus.

Corak kilang memberikan fleksibiliti dan kebolehselenggaraan yang lebih tinggi dengan merangkum proses penciptaan objek, dan memenuhi "prinsip terbuka-tertutup". Ia ialah corak reka bentuk yang disyorkan yang boleh digunakan untuk meningkatkan kebolehskalaan dan kebolehselenggaraan kod anda.

Atas ialah kandungan terperinci Analisis mendalam corak kilang Java: pelaksanaan tiga corak reka bentuk ciptaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan syarat pertanyaan bangunan pembolehubah kelas entiti apabila menggunakan tkmybatis untuk pertanyaan pangkalan data? Apr 19, 2025 pm 09:51 PM

Apabila menggunakan tkmybatis untuk pertanyaan pangkalan data, bagaimana dengan anggun mendapatkan nama pembolehubah kelas entiti untuk membina keadaan pertanyaan adalah masalah biasa. Artikel ini akan ...

See all articles