简单工厂模式

129 阅读1分钟

设计流程

(1) 将需要创建的各种不同对象的相关代码封装到不同的类中,这些类成为产品类,而将他们的公共代码抽象提取并封装到一个抽象产品类中,使具体产品类成为抽象产品类的子类。

(2)提供一个工厂类用于创建各种产品。

抽象产品类:

public abstract class Product {
    //  所有产品的公用业务方法
    public void methodSame() {
        //  公共方法的实现
        System.out.println("我是产品!");
    }

    public abstract void methodDiff();
}

具体产品类:

public class ConcreteProduct extends Product {
    @Override
    public void methodDiff() {
        System.out.println("我是产品A");
    }
}

工厂类:

public class Factory {
    //  静态工厂方法
    public static Product getProduct(String arg){
        Product product = null;
        if(arg.equalsIgnoreCase("A")){
            product = new ConcreteProduct();
            // 初始化设置product
        }
        return product;
    }
}

客户类:

public class Client {
    public static void main(String[] args) {
        Product product = Factory.getProduct("A");
        product.methodSame();
        product.methodDiff();
    }
}

控制台结果:

我是产品!
我是产品A

适用场景

(1) 工厂类负责创建的对象较少。

(2)客户端只知道传入工厂类的参数,对于如何创建对象并不关心。