工厂模式

来源:互联网 发布:mysql连接期限 编辑:程序博客网 时间:2024/06/09 17:15

        工厂方法模式是创建型模式,定义一个创建产品对象的工厂接口,将实际的创建工作推到子类当中完成,只负责具体工厂子类必须实现的接口,这样就可以让系统在不修改具体工厂角色的情况下引进新的产品

        写了一个非常简单的加法计算器,模拟工厂模式的实例

        有一个抽象类,抽象方法是计算2数相加之和

        public abstract class Operation {
        private double num1;
        private double num2;
        public double getNum1() {
           return num1;
        }
       public void setNum1(double num1) {
               this.num1 = num1;
       }
        public double getNum2() {
             return num2;
        }
       public void setNum2(double num2) {
             this.num2 = num2;
        }
         public abstract double getResult();
   }

     定义一个工厂接口

    public interface OperationFactory {
           public Operation getOperation();
     }

    定义工厂接口的实现类

   public class AddOperationFactory implements OperationFactory{
    @Override
    public Operation getOperation() {
        return new AddOperation();
    }
}

   用一个具体类实现相加的抽象类

public class AddOperation extends Operation{

    @Override
    public double getResult() {
        double result = this.getNum1()+this.getNum2();
        return result;
    }
}
     用main方法测试

     public class MainClass {
    public static void main(String[] args) {
        System.out.println("输入第一个数");
        Scanner scanner = new Scanner(System.in);
        String num1 = scanner.nextLine();
        System.out.println("请输入操作符");
        String oper = scanner.nextLine();
        System.out.println("输入第二个数");
        String num2 = scanner.nextLine();
        double result = 0;
        double doubleNum1 = Double.parseDouble(num1);
        double doubleNum2 = Double.parseDouble(num2);
        if ("+".equals(oper)) {
            OperationFactory factory = new AddOperationFactory();
            Operation operation = factory.getOperation();
            operation.setNum1(doubleNum1);
            operation.setNum2(doubleNum2);
            result = operation.getResult();
        }
        System.out.println(num1+oper+num2+"="+result);
    }
}



0 0
原创粉丝点击