工厂方法(factory-method)模式

1.意图

定义用于创建对象的接口,但是让子类决定要实例化哪个类。 工厂方法允许类将实例化推迟到子类。

2.解释
  • 它提供了一种将实例化逻辑委托给子类的方法。
  • 在基于类的编程中,工厂方法模式是使用工厂方法来处理创建对象的问题的创建模式,而不必指定将要创建的对象的确切类。 这可以通过调用工厂方法(在接口中指定并由子类实现)来实现,或者在基类中实现,并且可选地被派生类覆盖,而不是调用构造函数。
3.代码实例
public enum OperatorType {

    ADD("+"), SUB("-"), DIV("/"), MUL("*");

    private String operator;

    OperatorType(String operator) {
        this.operator = operator;
    }

    @Override
    public String toString() {
        return "OperatorType{" +
                "operator='" + operator + '\'' +
                '}';
    }
}
public interface Operator {

    OperatorType getOperatorType();

}
public interface OperatorFactory {

    Operator manufactureOperator(OperatorType operatorType);

}
public class AddOperator implements Operator{

    private OperatorType operatorType;

    public AddOperator(OperatorType operatorType){
        this.operatorType = operatorType;
    }


    public OperatorType getOperatorType() {
        return operatorType;
    }

    @Override
    public String toString() {
        return "AddOperator{" +
                "operatorType=" + operatorType +
                '}';
    }
}
public class AddOperatorFactory implements OperatorFactory {

    public Operator manufactureOperator(OperatorType operatorType) {
        return new AddOperator(operatorType);
    }
}
public class App {

    private static final Logger logger = LoggerFactory.getLogger(App.class);

    public static void main(String[] args) {
        OperatorFactory factory = new AddOperatorFactory();
        Operator operator = factory.manufactureOperator(OperatorType.DIV);
        logger.info(operator.toString());
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值