0
点赞
收藏
分享

微信扫一扫

工厂方法模式(雷锋依然在人间)

学习目标:

雷锋依然在人间——工厂方法模式


学习内容:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


1、简单工厂的实现
1.1 以计算机为例,结构图
在这里插入图片描述
1.2 工厂类这样写

package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class OperationAdd extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()+this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationSub extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA() - this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()* this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationDiv extends Operation {

    @Override
    public double getResult() throws Exception {
        double result = 0;
        if (this.get_numberB() == 0) {
            throw new Exception("除数不能为0");
        }
        result = this.get_numberA() / this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationFactory {
    public static Operation createOperate(String operate){
        Operation oper = null;
        switch (operate){
            case "+":
                oper=new OperationAdd();
                break;
            case "-":
                oper=new OperationSub();
                break;
            case "*":
                oper=new OperationMul();
                break;
            case "/":
                oper=new OperationDiv();
                break;
        }
        return oper;
    }
}
package org.xunfang.test;

public class Send {
    public static void main(String[] args) throws Exception {
        Operation operation;
        operation = OperationFactory.createOperate("+");
        operation.set_numberA(1);
        operation.set_numberB(2);
        /*operation.get_numberA();
        operation.get_numberB();*/
        double result = operation.getResult();
    }
}

2、工厂模式实现
2.1 结构图
在这里插入图片描述
2.2 代码

package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class OperationSub extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA() - this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()* this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationDiv extends Operation {

    @Override
    public double getResult() throws Exception {
        double result = 0;
        if (this.get_numberB() == 0) {
            throw new Exception("除数不能为0");
        }
        result = this.get_numberA() / this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public interface IFactory {
    Operation createOperate();
}
package org.xunfang.test;

public class AddFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationAdd();
    }
}
package org.xunfang.test;

public class SubFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationSub();
    }
}
package org.xunfang.test;

public class MulFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationMul();
    }
}
package org.xunfang.test;

public class DivFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationDiv();
    }
}
package org.xunfang.test;

public class Send {
    public static void main(String[] args) throws Exception {
        IFactory iFactory = new AddFactory();
        Operation operation = iFactory.createOperate();
        operation.set_numberA(1);
        operation.set_numberB(2);
        double result = operation.getResult();
        System.out.println("result = " + result);
    }
}

2.3 继承图

在这里插入图片描述
2.4 简单工厂vs工厂模式
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2.5 雷锋工厂
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个# 学习目标:

雷锋依然在人间——工厂方法模式


学习内容:

提示:这里可以添加要学的内容
例如:
1、 搭建 Java 开发环境
2、 掌握 Java 基本语法
3、 掌握条件语句
4、 掌握循环语句


1、简单工厂的实现
1.1 以计算机为例,结构图
在这里插入图片描述
1.2 工厂类这样写

package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class OperationAdd extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()+this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationSub extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA() - this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()* this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationDiv extends Operation {

    @Override
    public double getResult() throws Exception {
        double result = 0;
        if (this.get_numberB() == 0) {
            throw new Exception("除数不能为0");
        }
        result = this.get_numberA() / this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationFactory {
    public static Operation createOperate(String operate){
        Operation oper = null;
        switch (operate){
            case "+":
                oper=new OperationAdd();
                break;
            case "-":
                oper=new OperationSub();
                break;
            case "*":
                oper=new OperationMul();
                break;
            case "/":
                oper=new OperationDiv();
                break;
        }
        return oper;
    }
}
package org.xunfang.test;

public class Send {
    public static void main(String[] args) throws Exception {
        Operation operation;
        operation = OperationFactory.createOperate("+");
        operation.set_numberA(1);
        operation.set_numberB(2);
        /*operation.get_numberA();
        operation.get_numberB();*/
        double result = operation.getResult();
    }
}

2、工厂模式实现
2.1 结构图
在这里插入图片描述
2.2 代码

package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class Operation {
    private double _numberA=0;
    private double _numberB=0;

    public double get_numberA() {
        return _numberA;
    }

    public void set_numberA(double _numberA) {
        this._numberA = _numberA;
    }

    public double get_numberB() {
        return _numberB;
    }

    public void set_numberB(double _numberB) {
        this._numberB = _numberB;
    }

    //静态方法不可以重写
    /*public static double getResult(){
        double result = 0;
        return result;
    }*/
    public double getResult() throws Exception {
        double result = 0;
        return result;
    }
}
package org.xunfang.test;

public class OperationSub extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA() - this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationMul extends Operation {
    @Override
    public double getResult() {
        double result = 0;
        result = this.get_numberA()* this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public class OperationDiv extends Operation {

    @Override
    public double getResult() throws Exception {
        double result = 0;
        if (this.get_numberB() == 0) {
            throw new Exception("除数不能为0");
        }
        result = this.get_numberA() / this.get_numberB();
        return result;
    }
}
package org.xunfang.test;

public interface IFactory {
    Operation createOperate();
}
package org.xunfang.test;

public class AddFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationAdd();
    }
}
package org.xunfang.test;

public class SubFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationSub();
    }
}
package org.xunfang.test;

public class MulFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationMul();
    }
}
package org.xunfang.test;

public class DivFactory implements IFactory {
    @Override
    public Operation createOperate() {
        return new OperationDiv();
    }
}
package org.xunfang.test;

public class Send {
    public static void main(String[] args) throws Exception {
        IFactory iFactory = new AddFactory();
        Operation operation = iFactory.createOperate();
        operation.set_numberA(1);
        operation.set_numberB(2);
        double result = operation.getResult();
        System.out.println("result = " + result);
    }
}

2.3 继承图

在这里插入图片描述
2.4 简单工厂vs工厂模式
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
2.5 雷锋工厂
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述


学习时间:

提示:这里可以添加计划学习的时间
例如:
1、 周一至周五晚上 7 点—晚上9点
2、 周六上午 9 点-上午 11 点
3、 周日下午 3 点-下午 6 点


学习产出:

提示:这里统计学习计划的总量
例如:
1、 技术笔记 2 遍
2、CSDN 技术博客 3 篇
3、 学习的 vlog 视频 1 个

举报

相关推荐

0 条评论