Java设计模式--工厂方法模式

角色

抽象工厂:担任这个角色是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创建对象的工厂类都必须实现这个接口。

具体工厂:担任这个角色的是实现了抽象工厂接口的具体Java类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用来创建产品对象。

抽象产品:工厂方法模式所创建对象的超类型,也就是产品对象的共同父类或接口。

具体产品:这个角色实现了抽象产品接口。

结构图

 

 抽象工厂:

package com.design.factorymethod;

public interface Factory {

    Product createProduct();
}

抽象产品:

package com.design.factorymethod;

public interface Product {

    void productInfo();
}

具体产品:

package com.design.factorymethod;

public class ProductA implements Product {
    @Override
    public void productInfo() {
        System.out.println("Product A");
    }
}
package com.design.factorymethod;

public class ProductB implements Product {
    @Override
    public void productInfo() {
        System.out.println("Product B");
    }
}

具体工厂:

package com.design.factorymethod;

public class FactoryA implements Factory {
    @Override
    public Product createProduct() {
        return new ProductA();
    }
}
package com.design.factorymethod;

public class FactoryB implements Factory {
    @Override
    public Product createProduct() {
        return new ProductB();
    }
}

测试:

package com.design.factorymethod;

public class Client {

    private static Factory factoryA, factoryB;
    private static Product productA, productB;
    public static void main(String[] args){
        factoryA = new FactoryA();
        factoryB = new FactoryB();
        productA = factoryA.createProduct();
        productB = factoryB.createProduct();
        productA.productInfo();
        productB.productInfo();
    }
}

输出:

工厂方法模式和简单工厂模式的区别:工厂方法模式的核心是一个抽象工厂类,而简单工厂模式的核心是一个具体类

原文地址:https://www.cnblogs.com/LUA123/p/7794956.html