zoukankan      html  css  js  c++  java
  • 工厂方法

    一、定义:

    工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。

    二、示例代码:

    //工厂接口,通过实现工厂接口,才创建对应的实例
    public interface IFactory {
        public Operator createOperator();
    }
    //加法工厂
    public class AddFactory implements IFactory{
        @Override
        public Operator createOperator() {
            return new Addition();
        }
    }
    //除法工厂
    public class DivisionFactory implements IFactory {
        @Override
        public Operator createOperator() {
            return new Division();
        }
    }
    //乘法工厂
    public class MultipleFactory implements IFactory{
        @Override
        public Operator createOperator() {
            return new Multiplication();
        }
    }
    //减法工厂
    public class SubFactory implements IFactory {
        @Override
        public Operator createOperator() {
            return new Subtraction();
        }
    }
    //工厂方法所创建对象的父类
    public abstract class Operator {
        private String numberA;
        private String numberB;
    
        String printResult;
    
        public String getNumberA() {
            return numberA;
        }
    
        public String getNumberB() {
            return numberB;
        }
    
        public void setNumberA(String numberA) {
            this.numberA = numberA;
        }
    
        public void setNumberB(String numberB) {
            this.numberB = numberB;
        }
    
        public abstract String getResult(String operator);
    }
    //加法运算类
    public class Addition extends Operator {
    
        public String getResult(String operator) {
            DateFormat.getDateInstance();
            Double result=Double.parseDouble(getNumberA())+Double.parseDouble(getNumberB());
            printResult=result.toString();
            return printResult;
    
        }
    }
    //除法运算类
    public class Division extends Operator {
        public String getResult(String operator) {
            if (StringUtils.equals(getNumberB(),"0")){
                printResult="除数不能为零0";
            }
            else {
            Integer result = (int) (Double.parseDouble(getNumberA()) / Double.parseDouble(getNumberB()));
            printResult = result.toString();
            }
            return printResult;
        }
    }
    //乘法运算类
    public class Multiplication extends Operator {
    
        public String  getResult(String operator){
            Double result=Double.parseDouble(getNumberA())*Double.parseDouble(getNumberB());
            printResult=result.toString();
            return printResult;
        }
    
    }
    //减法运算类
    public class Subtraction extends Operator {
        public String getResult(String operator) {
            Double result = Double.parseDouble(getNumberA()) - Double.parseDouble(getNumberB());
            printResult = result.toString();
            return printResult;
        }
    }
    //客户端
    public class Client {
        public static void main(String[] args) throws Exception {
            String numberA="23";
            String numberB="2";
            String opt="2";
            /*利用工厂生成实例*/
            IFactory factory=new MultipleFactory();
            Operator operator = factory.createOperator();
            operator.setNumberA(numberA);
            operator.setNumberB(numberB);
            String result =operator.getResult(opt);
            System.out.println(result);
    
        }
    }
    
    
  • 相关阅读:
    Java线程:线程栈模型与线程的变量
    Java线程:创建与启动
    Java线程:概念与原理
    oracle的备份与恢复
    oracle视图
    oracle PL/SQL的介绍
    Oracle掌管权限和角色
    oracle基础 管理索引
    oracle维护数据的完整性
    删除VisualStudio 2013中的 "send Feedback" 按钮
  • 原文地址:https://www.cnblogs.com/yfy-/p/11964953.html
Copyright © 2011-2022 走看看