博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单工厂模式
阅读量:7051 次
发布时间:2019-06-28

本文共 1888 字,大约阅读时间需要 6 分钟。

介绍

使用一个单独的类去实现创建实例的过程。实现要操作类和实际操作类的解耦,增加程序可扩展性。

使用

public class SimpleFactory {    public static void main(String[] args) {        Operation operation = OperationFactory.createOperation("+");        operation.setNumberA(1);        operation.setNumberB(4);        System.out.println(operation.getResult());    }}/** * 抽象操作类 */abstract class Operation{    private double numberA;    private double numberB;    public double getNumberA() {        return numberA;    }    public void setNumberA(double numberA) {        this.numberA = numberA;    }    public double getNumberB() {        return numberB;    }    public void setNumberB(double numberB) {        this.numberB = numberB;    }    public abstract double getResult();}/** * 加法操作 */class OperationAdd extends Operation{    @Override    public double getResult() {        return getNumberA() + getNumberB();    }}/** * 减法操作 */class OperationSub extends Operation{    @Override    public double getResult() {        return getNumberA() - getNumberB();    }}/** * 乘法操作 */class OperationMul extends Operation{    @Override    public double getResult() {        return getNumberA() * getNumberB();    }}/** * 除法操作 */class OperationDiv extends Operation{    @Override    public double getResult() {        if (getNumberB() == 0){            try {                throw new Exception("除数不能为0");            } catch (Exception e) {                e.printStackTrace();            }        }        return getNumberA() / getNumberB();    }}/** * 操作工厂类 */class OperationFactory{    public static Operation createOperation(String operation){        if (operation.equals("+")){            return new OperationAdd();        } else if (operation.equals("-")){            return new OperationSub();        } else if (operation.equals("*")){            return new OperationMul();        } else {            return new OperationDiv();        }    }}复制代码

转载地址:http://aevol.baihongyu.com/

你可能感兴趣的文章
实习日记7.21
查看>>
Ural 1018 binary apple tree(显性树的树dp)
查看>>
[Linux学习]脚本文件名搜索
查看>>
操作ajax生成页面的一个问题
查看>>
Android开发之自定义Dialog简单实现
查看>>
hdu1528 Card Game Cheater
查看>>
dispatch_group_t
查看>>
菜鸟机器学习散点总结(三)
查看>>
Cocos Creator Animation 组件
查看>>
RH033读书笔记(1)-Lab2 Linux Usage Basics
查看>>
window对象 (浏览器对象模型)
查看>>
Loadrunner 关于参数赋值取值的操作
查看>>
C# 实现保留两位小数的方法
查看>>
Http协议4个新的http状态码:428、429、431、511;
查看>>
C#类型简述
查看>>
Go:字符串操作
查看>>
EXCEL 2010学习笔记 —— VLOOKUP函数 嵌套 MATCH 函数
查看>>
android graphics: 2D animation
查看>>
升级 python 2.6.6 系统到 2.7.10 版本
查看>>
start with connect by prior 递归查询用法
查看>>