Pengenalan
Corak reka bentuk kilang Java terutamanya terbahagi kepada tiga jenis:
Corak Kilang Mudah: Gunakan kelas kilang untuk merangkum proses penciptaan objek, dan pelanggan hanya perlu Dapatkan yang berbeza objek produk dengan melepasi parameter yang berbeza, dengan itu mengelakkan penciptaan objek produk secara langsung oleh pelanggan
Corak Kaedah Kilang: Abstrak kelas kilang, dan setiap kelas produk tertentu sepadan dengan Kelas kilang tertentu menghasilkan objek produk yang sepadan melalui polimorfisme. Pelanggan hanya perlu mengetahui antara muka kilang dan kelas pelaksanaannya Ia boleh menukar pelaksanaan kilang secara dinamik mengikut keperluan, dan kebolehskalaan adalah lebih baik.
Corak Kilang Abstrak: Berdasarkan corak kaedah kilang. , kelas kilang disarikan semula, dan berbilang antara muka kilang dimasukkan ke dalam satu antara muka kilang Setiap produk tertentu sepadan dengan kelas kilang tertentu Melalui berbilang Ia mempunyai skala yang lebih baik dan tahap abstraksi yang lebih tinggi, tetapi ia juga meningkatkan kerumitan sistem
.
Corak Kilang Mudah
Mula-mula tentukan Kelas produk abstrak:
1 2 3 4 5 6 7 8 | package com.fanqiechaodan.factory.simple.product;
public abstract class Product {
public abstract void use ();
}
|
Salin selepas log masuk
Kemudian tentukan kelas produk tertentu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public class ProductA extends Product{
@Override
public void use () {
System.out.println( "使用具体产品类A..." );
}
}
public class ProductB extends Product{
@Override
public void use () {
System.out.println( "使用具体产品类B..." );
}
}
public class ProductC extends Product{
@Override
public void use () {
System.out.println( "使用具体产品类C..." );
}
}
|
Salin selepas log masuk
Seterusnya tentukan kelas kilang untuk mencipta produk yang berbeza
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package com.fanqiechaodan.factory.simple.factory;
import com.fanqiechaodan.factory.simple.product.Product;
import com.fanqiechaodan.factory.simple.product.ProductA;
import com.fanqiechaodan.factory.simple.product.ProductB;
import com.fanqiechaodan.factory.simple.product.ProductC;
public class SimpleFactory {
public static Product createProduct(String type) {
switch (type) {
case "A" :
return new ProductA();
case "B" :
return new ProductB();
case "C" :
return new ProductC();
default :
throw new RuntimeException( "不支持的产品类型:" + type);
}
}
}
|
Salin selepas log masuk
Ujian:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | package com.fanqiechaodan.factory.simple;
import com.fanqiechaodan.factory.simple.factory.SimpleFactory;
import com.fanqiechaodan.factory.simple.product.Product;
public class Demo {
public static void main(String[] args) {
Product productA = SimpleFactory.createProduct( "A" );
productA. use ();
Product productB = SimpleFactory.createProduct( "B" );
productB. use ();
Product productC = SimpleFactory.createProduct( "C" );
productC. use ();
Product productD = SimpleFactory.createProduct( "D" );
productD. use ();
}
}
|
Salin selepas log masuk
![Cara menggunakan corak kilang Java untuk mencipta objek dan meningkatkan penggunaan semula dan fleksibiliti kod](https://img.php.cn/upload/article/000/887/227/168402390997449.png)
Corak kaedah kilang
Pertama tentukan antara muka untuk mewakili produk
1 2 3 4 5 6 7 8 | package com.fanqiechaodan.factory.method.product;
public interface Product {
void use ();
}
|
Salin selepas log masuk
Kedua tentukan dua kelas pelaksanaan produk tertentu
1 2 3 4 5 6 7 8 9 10 11 12 | public class ProductA implements Product{
@Override
public void use () {
System.out.println( "使用具体产品A..." );
}
}
public class ProductB implements Product{
@Override
public void use () {
System.out.println( "使用具体产品B..." );
}
}
|
Salin selepas log masuk
Kemudian tentukan kilang Antara muka digunakan untuk mencipta produk
1 2 3 4 5 6 7 8 9 | package com.fanqiechaodan.factory.method.factory;
import com.fanqiechaodan.factory.method.product.Product;
public interface Factory {
Product createProduct();
}
|
Salin selepas log masuk
Seterusnya, tentukan dua kelas pelaksanaan kilang tertentu, masing-masing digunakan untuk mencipta produk yang berbeza
1 2 3 4 5 6 7 8 9 10 11 12 | public class FactoryA implements Factory{
@Override
public Product createProduct() {
return new ProductA();
}
}
public class FactoryB implements Factory{
@Override
public Product createProduct() {
return new ProductB();
}
}
|
Salin selepas log masuk
Uji
1 2 3 4 5 6 7 8 9 10 11 12 13 | package com.fanqiechaodan.factory.method.factory;
import com.fanqiechaodan.factory.method.product.Product;
import com.fanqiechaodan.factory.method.product.ProductB;
public class FactoryB implements Factory{
@Override
public Product createProduct() {
return new ProductB();
}
}
|
Salin selepas log masuk
![Cara menggunakan corak kilang Java untuk mencipta objek dan meningkatkan penggunaan semula dan fleksibiliti kod](https://img.php.cn/upload/article/000/887/227/168402390932020.png)
Corak Kilang Abstrak
Pertama tentukan produk abstrak
1 2 3 4 5 6 | public interface ProductA {
void doSomething();
}
public interface ProductB {
void doSomething();
}
|
Salin selepas log masuk
Kedua tentukan produk khusus
rreee
Kemudian tentukan kilang abstrak
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class ProductA1 implements ProductA{
@Override
public void doSomething() {
System.out.println( "ProductA1 doSomething ..." );
}
}
public class ProductA2 implements ProductA{
@Override
public void doSomething() {
System.out.println( "ProductA2 doSomething ..." );
}
}
public class ProductB1 implements ProductB{
@Override
public void doSomething() {
System.out.println( "ProductB1 doSomething ..." );
}
}
public class ProductB2 implements ProductB{
@Override
public void doSomething() {
System.out.println( "ProductB2 doSomething ..." );
}
}
|
Salin selepas log masuk
Seterusnya tentukan Kilang khusus
1 2 3 4 5 6 7 8 9 10 11 | package com.fanqiechaodan.factory.abstractfactory.factory;
import com.fanqiechaodan.factory.abstractfactory.product.ProductA;
import com.fanqiechaodan.factory.abstractfactory.product.ProductB;
public interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
|
Salin selepas log masuk
Ujian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class Factory1 implements AbstractFactory{
@Override
public ProductA createProductA() {
return new ProductA1();
}
@Override
public ProductB createProductB() {
return new ProductB1();
}
}
public class Factory2 implements AbstractFactory{
@Override
public ProductA createProductA() {
return new ProductA2();
}
@Override
public ProductB createProductB() {
return new ProductB2();
}
}
|
Salin selepas log masuk
![Cara menggunakan corak kilang Java untuk mencipta objek dan meningkatkan penggunaan semula dan fleksibiliti kod](https://img.php.cn/upload/article/000/887/227/168402390969936.png)
Atas ialah kandungan terperinci Cara menggunakan corak kilang Java untuk mencipta objek dan meningkatkan penggunaan semula dan fleksibiliti kod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!