一.概念编程
为建立一组相关或者是相互依赖的对象提供一个接口,而不须要指定他们的具体实现类。app
二.优势ide
分离接口与实现,客户端使用抽象工厂来建立须要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口编程而已,使其从具体的产品实现中解耦,同时基于接口与实现分离,使抽象该工厂方法模式在切换产品类时更加灵活、容易。对象
三. 缺点blog
对类文件的爆炸性增长,不太容易扩展新的产品类。接口
四.UML图产品
五.实例class
/** * 计算器运算操做接口 * Created by hm on 16/10/17. */ public abstract class OperatorInterface { /** * 运算操做数 * @param num 可变参数 */ public abstract int operator(int ...num); }
/** * 加法运算 * Created by hm on 16/10/17. */ public class AddOperator extends OperatorInterface { @Override public int operator(int... num) { int sum = 0; if(num.length != 0){ for (int a : num) { sum += a; } } return sum; } }
/** * 工厂接口 * Created by apple on 16/10/17. */ public interface ProductFactory { OperatorInterface createOperator(); }
/** * 加法工厂 * Created by apple on 16/10/17. */ public class AddOperatorFactory implements ProductFactory { @Override public OperatorInterface createOperator() { return new AddOperator(); } }