您的位置:首页 > 其它

设计模式学习第四天

2016-04-17 00:31 267 查看
今天是周末,需要散心,就简单学习一下。

public class OperationFactory {

public static Operation createOperation(String operation) {

           Operation oper = null;

           switch(operation) {

            case "+": 

                 oper = new AddOperation();

                 break;

            case "/":

                 oper = new DivOperation();

                 break;

           }

           return oper;

        }

}

工厂模式的调用其实就是多态的应用。父类指向子类,这就是多态的使用。

所谓的工厂模式,就是利用选择分支语句充当工厂的生产过程,利用不同的参数来生产不同的产品,利用父类指向子类来产生不同的子类。工厂类就好比一个工厂,利用子类的不同特征用选择语句来产生不同的子类,就好比一个工厂生产不同的产品。因为这是最简单的一种封装,其实工厂模式也可以看做是对生产不同子类的一个简单封装。

客户端调用:

import java.util.Scanner;

public class Custom {

  public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

        Operation oper = null;

        System.out.println("请输入要运算的第一个数字:");

        oper.setNumberA(sc.nextDouble());

        System.out.println("请选择您需要的操作:+、/");

        String operation = sc.next();

        System.out.println("请输入要运算的第二个数字:");

        oper.setNumberB(sc.nextDouble());

        Double result = 0.0;

        oper = OperationFactory.createOperation(operation);

        result = oper.getResult();

        System.out.println("运算的结果为:" + result);  

  }

}

调用过程中发现:父类属性的设置错误,因为要想不实例化父类而调用父类方法,需要将这个方法使用静态方法,静态方法调用属性只能调用静态属性,故:更改父类。如下:

public class Operation {

   private static Double _numberA = 0.0;

   private static Double _numberB = 0.0;

   public static  Double getNumberA(){

      return _numberA;

   }

   public static void setNumberA(Double numberA) {

      _numberA = numberA;

   }

   public static  Double getNumberB() {

      return _numberB;

   }

   public static  void setNumberB(Double numberB) {

       _numberB = numberB;

   }

   public Double getResult(){

       Double result = 0.0;

       return result;     

   }

}

由于父类更改了,而我使用的是记事本来编译。所以相关的类全部要重新编译,也可以叫联调。即:javac Operation.java; javaac AddOperation.java; javac DivOperation.java;

javac OperationFactory.java; javac Custom;

至此,一个设计模式学习完毕。通过学习,了解到:所谓的简单工厂设计模式就是利用了面向对象00的三大特性:封装,继承,多态;最主要的是利用多态开利用工厂生产不同的子类,就是所谓的工厂。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: