设计模式学习第四天

今天是周末,需要散心,就简单学习一下。

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的三大特性:封装,继承,多态;最主要的是利用多态开利用工厂生产不同的子类,就是所谓的工厂。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值