Rumah > Java > javaTutorial > Penjelasan terperinci tentang corak kilang abstrak JAVA dengan contoh

Penjelasan terperinci tentang corak kilang abstrak JAVA dengan contoh

WBOY
Lepaskan: 2022-04-20 20:56:19
ke hadapan
2754 orang telah melayarinya

Artikel ini membawakan anda pengetahuan yang berkaitan tentang java terutamanya isu berkaitan tentang corak kilang abstrak itu berdasarkan contoh sebenar. harap dapat membantu semua.

Penjelasan terperinci tentang corak kilang abstrak JAVA dengan contoh

Kajian yang disyorkan: "tutorial video java"

Apakah corak kilang abstrak

Definisi corak Kilang Abstrak (AbstractFactory): ialah antara muka yang menyediakan kelas akses dengan antara muka untuk mencipta satu set objek yang berkaitan atau saling bergantung, dan kelas akses boleh memperoleh keluarga yang sama objek tanpa menyatakan kelas khusus produk yang dikehendaki struktur Corak tahap produk yang berbeza.

Memenuhi syarat:

  • Terdapat berbilang keluarga produk dalam sistem dan setiap kilang tertentu mencipta produk daripada keluarga yang sama tetapi tergolong dalam struktur hierarki yang berbeza .
  • Sistem ini hanya boleh mengambil produk satu keluarga pada satu masa iaitu produk keluarga yang sama boleh digunakan bersama.

Kelebihan:

  • Produk berbilang peringkat yang berkaitan dalam keluarga produk boleh diuruskan bersama dalam kelas tanpa perlu Memperkenalkan secara khusus pelbagai kelas baharu untuk pengurusan.

  • Apabila keluarga produk diperlukan, kilang abstrak boleh memastikan bahawa pelanggan sentiasa menggunakan kumpulan produk produk yang sama.

  • Kilang abstrak meningkatkan kebolehskalaan program Apabila menambah keluarga produk baharu, tidak perlu mengubah suai kod asal untuk memenuhi prinsip pembukaan dan penutup.

Kelemahan:

  • Apabila produk baharu perlu ditambah kepada keluarga produk, semua kelas kilang perlu diubah suai. Ia meningkatkan abstraksi dan kesukaran memahami sistem.

Pelaksanaan Kilang Abstrak

Peranan utama dalam kes tersebut adalah seperti berikut:
Kilang Abstrak: Pewarisan Tujuh Wira
Kilang (SimpleFactory): Tuan, Puan
Produk Abstrak (Produk): Meteorit (bahan mentah untuk membuat pedang), sarang telur merpati ( Roh Merpati yang belum menetas)
Produk Konkrit: Tujuh Pedang. Tujuh Roh Merpati

Kes:
Tuan mempunyai warisan Tujuh Wira dan boleh menempa Pedang Matahari dan memupuk merpati semangat kecil jantan.
Isteri tuan mempunyai warisan Tujuh Pahlawan dan boleh menempa Pedang Yin dan menanam burung merpati betina.
Tujuh Wira mencari tuan mereka dan isteri mereka untuk membuat pedang mereka sendiri dan mengambil merpati kecil mereka sendiri.

Produk abstrak, produk

Antara muka S1 (Meteorit):

Satu kaedah diisytiharkan dalam antara muka

public interface S1 {
    void show();}
Salin selepas log masuk

Antara muka S2 (sarang telur merpati):

Satu kaedah diisytiharkan dalam antara muka

public interface S2 {
    void show();}
Salin selepas log masuk

Kelas A1 melaksanakan antara muka S1 (Changhong Sword):

melaksanakan antara muka S1

public class A1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把长虹剑");

    }}
Salin selepas log masuk

Kelas B1 melaksanakan antara muka S1 (Bingpo Pedang):

Laksanakan antara muka S1

public class B1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把冰魄剑");

    }}
Salin selepas log masuk

Kelas C1 melaksanakan antara muka S1 (Pedang Ziyun):

Melaksanakan antara muka S1

public class C1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把紫云剑");
    }}
Salin selepas log masuk

Kelas D1 melaksanakan antara muka S1 (Yuhua Sword):

Melaksanakan antara muka S1

public class D1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把紫云剑");
    }}
Salin selepas log masuk

Kelas E1 melaksanakan antara muka S1 (Pedang Cahaya Hijau):

Melaksanakan antara muka Ss

public class E1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把紫云剑");
    }}
Salin selepas log masuk

Kelas F1 melaksanakan antara muka S1 (Ben Lei Sword):

melaksanakan antara muka Ss

public class F1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把紫云剑");
    }}
Salin selepas log masuk

Implementasi kelas G1 Antaramuka S1 (Tornado Sword):

Melaksanakan antara muka Ss

public class G1 implements S1 {
    @Override
    public void show() {
        System.out.println("打造了一把紫云剑");
    }}
Salin selepas log masuk

Kelas A2 melaksanakan antara muka S2 (Ling Ge No. 1):

Melaksanakan antara muka S1

public class A2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");

    }}
Salin selepas log masuk

Kelas B2 melaksanakan antara muka S2 (Ling Ge No. 2):

Melaksanakan antara muka S1

public class B2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");

    }}
Salin selepas log masuk

Kelas C2 melaksanakan antara muka S2 (Lingge 3):

Melaksanakan antara muka S1

public class C2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");
    }}
Salin selepas log masuk

Kelas D2 melaksanakan antara muka S2 (Lingge 4):

melaksanakan antara muka S1

public class D2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");
    }}
Salin selepas log masuk

Kelas E2 melaksanakan antara muka S2 (Lingge No. 5):

melaksanakan antara muka Ss

public class E2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");
    }}
Salin selepas log masuk

Implementasi kelas F2 Antaramuka S2 (Lingge No. 6):

melaksanakan antara muka Ss

public class F2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");
    }}
Salin selepas log masuk

Kelas G2 melaksanakan antara muka S2 (Lingge No. 7) :

Melaksanakan antara muka Ss

public class G2 implements S2 {
    @Override
    public void show() {
        System.out.println("灵鸽七号");
    }}
Salin selepas log masuk

Kilang abstrak, kilang

Antara muka Zz (warisan Tujuh Wira):

Antara muka mengisytiharkan kaedah membuat pedang abc1() dan kaedah menaikkan merpati abc2()

public interface Zz {
    S1 abc1(String a);
    S2 abc2(String a);}
Salin selepas log masuk

Kelas Nan melaksanakan antara muka Zz (Master) :

Laksanakan antara muka Zz

public class Nan implements Zz {
    private static S1 s1;
    private static S2 s2;

    public S1 abc1(String a) {
        if ("长虹剑".equals(a)) {
            s1 = new A1();
        } else if ("奔雷剑".equals(a)) {
            s1 = new F1();
        } else if ("青光剑".equals(a)) {
            s1 = new E1();
        } else if ("雨花剑".equals(a)) {
            s1 = new D1();
        } else if ("旋风剑".equals(a)) {
            s1 = new G1();
        } else {
            System.out.println("铸剑失败");
        }
        return s1;
    }
    public S2 abc2(String a) {
        if ("灵鸽一号".equals(a)) {
            s2 = new A2();
        } else if ("灵鸽二号".equals(a)) {
            s2 = new F2();
        } else if ("灵鸽三号".equals(a)) {
            s2 = new E2();
        } else if ("灵鸽四号".equals(a)) {
            s2 = new D2();
        } else if ("灵鸽五号".equals(a)) {
            s2 = new G2();
        } else {
            System.out.println("领养失败");
        }
        return s2;
    }}
Salin selepas log masuk

Kelas Nv melaksanakan antara muka Zz (Isteri Sarjana):

Laksanakan antara muka Zz

public class Nv implements Zz {
    private static S1 s1;
    private static S2 s2;

    public S1 abc1(String a) {
        if ("冰魄剑".equals(a)) {
            s1 = new B1();
        } else if ("紫云剑".equals(a)) {
            s1 = new C1();
        } else {
            System.out.println("铸剑失败");
        }
        return s1;
    }
    public S2 abc2(String a) {
        if ("灵鸽六号".equals(a)) {
            s2 = new B2();
        } else if ("灵鸽七号".equals(a)) {
            s2 = new C2();
        } else {
            System.out.println("领养失败");
        }
        return s2;
    }}
Salin selepas log masuk

Ujian

Kelas ujian:

public class Demo {
    public static void main(String[] args) {
        System.out.println("---------至阳传承-------------");
        //师傅
        Nan nan = new Nan();
        //造剑
        S1 a1 = nan.abc1("长虹剑");
        S1 d1 = nan.abc1("雨花剑");
        S1 e1 = nan.abc1("青光剑");
        S1 f1 = nan.abc1("奔雷剑");
        S1 g1 = nan.abc1("旋风剑");
        //养鸽子
        S2 a2 = nan.abc2("灵鸽一号");
        S2 d2 = nan.abc2("灵鸽二号");
        S2 e2 = nan.abc2("灵鸽三号");
        S2 f2 = nan.abc2("灵鸽四号");
        S2 g2 = nan.abc2("灵鸽五号");
        a1.show();
        d1.show();
        e1.show();
        f1.show();
        g1.show();
        a2.show();
        d2.show();
        e2.show();
        f2.show();
        g2.show();
        System.out.println("---------至阴传承-------------");
        //女铸剑师
        Nv nv = new Nv();
        S1 b1 = nv.abc1("冰魄剑");
        S1 c1 = nv.abc1("紫云剑");
        b1.show();
        c1.show();
        S2 b2 = nv.abc2("灵鸽六号");
        S2 c2 = nv.abc2("灵鸽七号");
        b2.show();
        c2.show();
    }}
Salin selepas log masuk

Pembelajaran yang disyorkan : " tutorial video java"

Atas ialah kandungan terperinci Penjelasan terperinci tentang corak kilang abstrak JAVA dengan contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
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