zoukankan      html  css  js  c++  java
  • 设计模式之简单工厂模式

    简单工厂模式——SimpleFactoryPattern

    简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

    以两个数的加减乘除运算为例,首先我们实现一个计算基类Operation,用于初始化两个数据,并声明一个获得结果的虚方法。

    之后我们实现每一个计算方法,并继承Operation基类。

    最后创建一个生产计算方法工厂类,这样只需要输入运算符号,工厂就能实例化出合适的对象供我们使用。

    简单工厂模式使用于多种方法继承同一基类,通过工厂输入某种条件,快速生成我们所需要的合适的对象。

    Operation 计算基类

     1 package SimpleFactoryPattern;
     2 
     3 public class Operation {
     4     private double numberA=0;
     5     private double numberB=0;
     6 
     7     public double getNumberA() {
     8         return numberA;
     9     }
    10 
    11     public void setNumberA(double numberA) {
    12         this.numberA = numberA;
    13     }
    14 
    15     public double getNumberB() {
    16         return numberB;
    17     }
    18 
    19     public void setNumberB(double numberB) {
    20         this.numberB = numberB;
    21     }
    22     public double GetResult()
    23     {
    24         double result=0;
    25         return result;
    26     }
    27 }

    OperationAdd 加法子类

     1 package SimpleFactoryPattern;
     2 
     3 public class OperationAdd extends Operation {
     4     @Override
     5     public double GetResult() {
     6         double result=0;
     7         result=getNumberA()+getNumberB();
     8         return result;
     9     }
    10 }

    OperationMul 乘法子类

     1 package SimpleFactoryPattern;
     2 
     3 public class OperationMul extends Operation {
     4     @Override
     5     public double GetResult() {
     6     double result=0;
     7     result=getNumberA()*getNumberB();
     8     return result;
     9     }
    10 }

    OperationFactory  简单工厂类

     1 package SimpleFactoryPattern;
     2 
     3 public class OperationFactory {
     4     public static Operation createOperate(String operate)
     5     {
     6         Operation oper=null;
     7         switch (operate)
     8         {
     9             case "+":
    10                 oper=new OperationAdd();
    11                 break;
    12             case "*":
    13                 oper=new OperationMul();
    14                 break;
    15         }
    16         return oper;
    17     }
    18 }

    主函数

     1 package SimpleFactoryPattern;
     2 
     3 public class Client {
     4 
     5     public static void main(String[] args) {
     6         Operation operationAdd;
     7         operationAdd=OperationFactory.createOperate("+");
     8         operationAdd.setNumberA(5);
     9         operationAdd.setNumberB(2);
    10         System.out.println("5+2="+operationAdd.GetResult());
    11         Operation operationMul;
    12         operationMul=OperationFactory.createOperate("*");
    13         operationMul.setNumberB(2);
    14         operationMul.setNumberA(5);
    15         System.out.println("5*2="+operationMul.GetResult());
    16     }
    17 }

    运行结果

    相关代码:https://github.com/lancelee98/DesignPattern/tree/master/src/SimpleFactoryPattern

  • 相关阅读:
    python二进制转换
    git的使用
    c++primer plus笔记
    c++primer 学习笔记
    二分查找
    字符串全排列
    斐波那契数列
    JavaScript 相关
    HTTP记录
    前端笔记
  • 原文地址:https://www.cnblogs.com/lancelee98/p/10271235.html
Copyright © 2011-2022 走看看