• java设计模式之--工厂方法模式


    人生,唯有锻炼与读书不能辜负


    工厂模式:
    区别于简单工厂模式
    1、简单工厂模式中工厂类有逻辑代码,根据类型来创建不同的对象
    2、工厂模式就是把工厂类进行封装解耦,抽象出工厂类,然后集成创建不用的工厂类,然后生成不同的对象

    举个例子:
      我是一个实业老板,最开始我有一个厂子,厂子里有几个不同的生产线,你需要什么产品,告诉我,我通过不同的生产线来给你生产,
    但是随着业务的增多以及新业务的上线,厂子越来越大,管理就是个问题,每一次新业务上线都是整个厂子进行。
      为了解决这个问题,我成立了集团,下属管理多个厂子,每个厂子管理一条或者几条生产线,形成了金字塔的管理模式,
    这样的话,未来集团的发展就很清晰,新增业务或者旧有业务增加生产线就很独立,不会对其他工厂业务产生影响了。

    类UML图如下:


      具体代码:
      
    AbstractOperation代码:
    public abstract class AbstractOperation {

    private double numA = 0;
    private double numB = 0;

    public abstract double getResult();

    public double getNumA() {
    return numA;
    }

    public void setNumA(double numA) {
    this.numA = numA;
    }

    public double getNumB() {
    return numB;
    }

    public void setNumB(double numB) {
    this.numB = numB;
    }
    }
    
    
    OperationAdd代码:
    public class OperationAdd extends AbstractOperation {

    @Override
    public double getResult() {
    return getNumA()+getNumB();
    }
    }

    OperationSub代码:
    public class OperationSub extends AbstractOperation {

    @Override
    public double getResult() {
    return getNumA()-getNumB();
    }
    }

    AbstractFactory代码:
    public abstract class AbstractFactory {

    public abstract AbstractOperation getOperation();

    }

    FactoryAdd代码:
    public class FactoryAdd extends AbstractFactory {

    @Override
    public AbstractOperation getOperation() {
    return new OperationAdd();
    }
    }

    FactorySub代码:
    public class FactorySub extends AbstractFactory {
    @Override
    public AbstractOperation getOperation() {
    return new OperationSub();
    }
    }

    测试代码:
    public class Main {

    public static void main(String[] args) {
    AbstractFactory factory = new FactoryAdd();
    AbstractOperation operation = factory.getOperation();
    operation.setNumA(1);
    operation.setNumB(2);
    System.out.println(operation.getResult());
    }

    }






  • 相关阅读:
    在Rancher中添加为中国区优化的k8s应用商店的步骤和方法
    debian源配置实例
    面向对象(六)——元类
    异常处理
    面向对象(五)——isinstance与issubclass、反射、内置方法
    面向对象(四)——classmethod、staticmethod装饰器(绑定方法与非绑定方法)
    面向对象(三)——组合、多态、封装、property装饰器
    面向对象(二)——继承
    面向对象(一)——类与对象介绍
    ATM+购物车结构
  • 原文地址:https://www.cnblogs.com/tengri-fighting/p/12858676.html
Copyright © 2020-2023  润新知