博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式梳理——简单工厂模式
阅读量:4096 次
发布时间:2019-05-25

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

一、概述

       简单工厂模式又称静态工厂模式。属于创建型模式,但不属于23中GOF设计模式之一。

       简单工厂模式,即通过专门定义一个工厂类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 

二、编程实现

       该程序主要通过模拟计算器的功能实现。

1、创建共同父类

public class Operation {    private int numberA;    private int numberB;    public int getNumberA() {        return numberA;    }    public void setNumberA(int numberA) {        this.numberA = numberA;    }    public int getNumberB() {        return numberB;    }    public void setNumberB(int numberB) {        this.numberB = numberB;    }    public int getResult(){        int result = 0;        return result;    }}

2、创建基于父类的子类

     2.1 加法类

public class OperationAdd extends Operation {    @Override    public int getResult() {        int result = 0;        result = super.getNumberA() +super.getNumberB();        return result;    }}

 2.2 减法类

public class OperationSub extends Operation {    @Override    public int getResult() {        int result = 0;        result = super.getNumberA() - super.getNumberB();        return result;    }}

2.3 乘法类

public class OperationMult extends Operation {    @Override    public int getResult() {        int result = 0;        result = super.getNumberA() * super.getNumberB();        return result;    }}

2.4 除法类

public class OperationDiv extends Operation {    @Override    public int getResult() {        int result = 0;        try {            result = super.getNumberA() / super.getNumberB();        }catch (Exception e){            System.out.println("除数不能为0.");        }        return result;    }}

3、创建工厂类

public class OperationFactory {    public static Operation createOperate(String operateType){        Operation operation = null;        switch (operateType){            case "+":                operation = new OperationAdd();                break;            case "-":                operation = new OperationSub();                break;            case "*":                operation = new OperationMult();                break;            case "/":                operation = new OperationDiv();                break;        }        return operation;    }}

4、测试

public class Test {    public static void main(String[] args) {        Operation oper = OperationFactory.createOperate("+");        oper.setNumberA(50);        oper.setNumberB(10);        System.out.println(oper.getResult());    }}

 

注:参考文献《大话设计模式》程杰著。

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

你可能感兴趣的文章
动态规划之递增子序列最大和(Maximum Sum Increasing Subsequence)
查看>>
可排列的最长公共子序列(Longest common subsequence with permutations allowed)
查看>>
动态规划之分区问题(Partition problem)
查看>>
用Intellij Idea从Github上获取代码
查看>>
算法分析之渐近分析(Asymptotic Analysis)
查看>>
最小总距离点的最优位置
查看>>
Android SDK在线更新镜像服务器
查看>>
提升数据库数据查询效率
查看>>
从N个不同数字中等概率取出M个数字(N>=M)
查看>>
Linux下安装GitHub
查看>>
设计模式之代理模式
查看>>
设计模式之组合模式
查看>>
版本号比较(Compare two Version numbers)
查看>>
垃圾回收算法之分代回收算法
查看>>
垃圾回收算法之标记-清除算法
查看>>
垃圾回收算法之标记-整理算法
查看>>
垃圾回收算法之复制算法
查看>>
Java虚拟机工具之虚拟机进程状况工具jps
查看>>
Java虚拟机工具之虚拟机统计监控工具jstat
查看>>
sed编辑器基础之替换命令
查看>>