欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java工廠方法和抽象工廠

林國瑞1年前8瀏覽0評論

Java中的工廠方法和抽象工廠都是面向?qū)ο笤O(shè)計中的重要概念,它們能夠幫助開發(fā)者更加方便地創(chuàng)建和使用對象。

工廠方法是一種創(chuàng)建型設(shè)計模式,它定義了一個用于創(chuàng)建對象的接口,但并不確定具體對象的類型,具體的實現(xiàn)由子類來完成。

public abstract class AbstractFactory {
public abstract Product createProduct();
}
public class ConcreteFactory extends AbstractFactory {
public Product createProduct() {
return new ConcreteProduct();
}
}
public interface Product {
void use();
}
public class ConcreteProduct implements Product {
public void use() {
System.out.println("Using ConcreteProduct");
}
}

抽象工廠是一種創(chuàng)建型設(shè)計模式,它提供了一種創(chuàng)建一系列相關(guān)或者相互依賴對象的接口,而不需要明確指定具體類。

public interface AbstractFactory {
ProductA createProductA();
ProductB createProductB();
}
public interface ProductA {
void use();
}
public interface ProductB {
void eat();
}
public class ConcreteFactory1 implements AbstractFactory {
public ProductA createProductA() {
return new ConcreteProductA1();
}
public ProductB createProductB() {
return new ConcreteProductB1();
}
}
public class ConcreteFactory2 implements AbstractFactory {
public ProductA createProductA() {
return new ConcreteProductA2();
}
public ProductB createProductB() {
return new ConcreteProductB2();
}
}
public class ConcreteProductA1 implements ProductA {
public void use() {
System.out.println("Using ConcreteProductA1");
}
}
public class ConcreteProductA2 implements ProductA {
public void use() {
System.out.println("Using ConcreteProductA2");
}
}
public class ConcreteProductB1 implements ProductB {
public void eat() {
System.out.println("Eating ConcreteProductB1");
}
}
public class ConcreteProductB2 implements ProductB {
public void eat() {
System.out.println("Eating ConcreteProductB2");
}
}

工廠方法和抽象工廠都可以幫助開發(fā)者解決對象創(chuàng)建的瓶頸,使得對象的使用更加方便簡單。