工厂方法模式 (Factory Method Pattern)


  工厂方法模式是对简单工厂模式的改进,它将工厂类做进一步的抽象,工厂类不再负责所有产品的创建,而是将具体创建工作交给子类去做,这样可以在不修改工厂角色的情况下引进新产品,即给产品创建新的工厂类。

public class Main {
    
    public static void main(String[] args){
        FactoryA factoryA = new FactoryA();
        factoryA.getProduct().Show();
 
        FactoryB factoryB = new FactoryB();
        factoryB.getProduct().Show();
    }
}

// 产品类
abstract class Product {
    public abstract void Show();
}
class ProductA extends Product {
    
    @Override
    public void Show() {
        System.out.println("生产出了产品A");
    }
}
class ProductB extends Product {

    @Override
    public void Show() {
        System.out.println("生产出了产品B");
    }
}

// 工厂类
abstract class Factory {
    public abstract Product getProduct();
}
class FactoryA extends Factory {
    
    @Override
    public Product getProduct() {
        return new ProductA();
    }
}
class FactoryB extends Factory {
    
    @Override
    public Product getProduct() {
        return new ProductB();
    }
}