• 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());
    }

    }






  • 相关阅读:
    Maven报错找不到jre
    SpringBoot学习记(一)第一个SpringBoot Web服务
    (转!)大话websocket
    (转!)Netdata---Linux系统性能实时监控平台部署
    Jmeter(四十三)WebSocket Sampler 和 Ajax Request
    Jmeter(四十二)Jmeter工作原理
    Centos7安装docker(转!)
    es6 数组去重
    数组对象根据某个值相同合并分组
    await在forEach不起作用解决【await is a reserved word】
  • 原文地址:https://www.cnblogs.com/tengri-fighting/p/12858676.html
Copyright © 2020-2023  润新知