• 设计模式——简单工厂模式


    工作之后,一直忙于工作,像一位前辈所说的那样,我的确需要好好总结一下所学所用过的知识了。

    就从复习设计模式开始,今天复习的是简单工厂设计模式。

    如设计一个简单的计算器程序:

      需要从Console端获得两个数字、一个运算符(+-*/),并计算得出结果。

      

    此处可利用简单工厂根据运算符生成运算类,类图如下:

    package sf.simpleFactory;
    
    import sf.simpleFactory.Operator.DivisionOperator;
    import sf.simpleFactory.Operator.MinusOperator;
    import sf.simpleFactory.Operator.MultipleOperator;
    import sf.simpleFactory.Operator.PlusOperator;
    
    public class OperatorFactory {
        public static Operator getInstance(int digit1, int digit2, String operator) {
            if (operator.equals("+")) {
                return new PlusOperator(digit1, digit2, operator);
            } else if (operator.equals("-")) {
                return new MinusOperator(digit1, digit2, operator);
            } else if (operator.equals("*")) {
                return new MultipleOperator(digit1, digit2, operator);
            } else if (operator.equals("/")) {
                return new DivisionOperator(digit1, digit2, operator);
            } else {
                return null;
            }
        }
    }
    package sf.simpleFactory;
    
    public abstract class Operator {
        public int digit1;
        public int digit2;
        public Operator(int digit1, int digit2, String operator) {
            this.digit1 = digit1;
            this.digit2 = digit2;
        }
        public abstract float calculate();
    
        public static class PlusOperator extends Operator{
            public PlusOperator(int digit1, int digit2, String operator) {
                super(digit1, digit2, operator);
            }
            @Override
            public float calculate() {
                return digit1 + digit2;
            }
        }
        
        public static class MinusOperator extends Operator{
            public MinusOperator(int digit1, int digit2, String operator) {
                super(digit1, digit2, operator);
            }
            @Override
            public float calculate() {
                return digit1 - digit2;
            }
        }
        
        public static class MultipleOperator extends Operator{
            public MultipleOperator(int digit1, int digit2, String operator) {
                super(digit1, digit2, operator);
            }
            @Override
            public float calculate() {
                return digit1 * digit2;
            }
        }
        
        public static class DivisionOperator extends Operator{
            public DivisionOperator(int digit1, int digit2, String operator) {
                super(digit1, digit2, operator);
            }
            @Override
            public float calculate() {
                return digit1 / digit2;
            }
        }
    }
  • 相关阅读:
    百度正确的打开姿势
    无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集 收藏
    ASP.NET智能提示(一)
    全屏窗体的完整方法(转)
    AutoCompleteExtender轻易实现搜索智能提示 附带一点小讨论
    Winform实现百度搜索框智能提示功能( C# )
    C#(asp.net)仿baidu或google智能匹配搜索下拉框
    vs2008 asp.net ajax控件实现百度,谷歌智能搜索
    js实现搜索框智能提示上下移动效果
    sql server 去重复 转帖的
  • 原文地址:https://www.cnblogs.com/sunnyfarmer/p/3543679.html
Copyright © 2020-2023  润新知