zoukankan      html  css  js  c++  java
  • 简单工厂模式 SimpleFactory

     简单工厂模式 SimpleFactory

    1.1什么是简单工厂设计模式
    简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。(来源百度百科)
    1.2简单工厂模式的UML图
     
    1.3UML图中的角色及其职责
    工厂(Creator)角色
    简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。
    抽象产品(Product)角色
    简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
    具体产品(Concrete Product)角色
    是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
     
    2.1实例
    我们使用简单工厂设计模式实现一个计算器控制台程序,要求输入两个数和一个运算符号,得出结果
    Operation运算类
    package dp01SimpleFactory;
    
    public class Operation {
        protected int numA;
        protected int numB;
        public int getNumA() {
            return numA;
        }
        public void setNumA(int numA) {
            this.numA = numA;
        }
        public int getNumB() {
            return numB;
        }
        public void setNumB(int numB) {
            this.numB = numB;
        }
        public int getResult(){
            int result=0;
            return result;
        }
    }
    四个预算类的加减乘除子类
    加法类
    package dp01SimpleFactory;
    
    public class OperationAdd extends Operation{
        public int getResult() {
            int result = numA+numB;
            return result;
        }
    }
    减法类
    package dp01SimpleFactory;
    
    public class OperationSub extends Operation{
        public int getResult() {
            int result = numA-numB;
            return result;
        }
    }
    乘法类
    package dp01SimpleFactory;
    
    public class OperationMul extends Operation{
        public int getResult() {
            int result = numA*numB;
            return result;
        }
    }
    除法类
    package dp01SimpleFactory;
    
    public class OperationDiv extends Operation{
        public int getResult() {
            if(numB==0){
                try {
                    throw new Exception("除数不能为0");
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            int result = numA/numB;
            return result;
        }
    }
    工厂类
     
    package dp01SimpleFactory;
    
    public class OperationFactory {
        
        public static Operation createOperation(String operator){
            Operation oper=null;
            switch (operator) {
            case "+":
                oper=new OperationAdd();
                break;
            case "-":
                oper=new OperationSub();
                break;
            case "*":
                oper=new OperationMul();
                break;
            case "/":
                oper=new OperationDiv();
                break;
            }
            return oper;
        }
    }
    测试方法类
    package dp01SimpleFactory;
     
    public class Program {
         public static void main(String[] args) {
              Operation oper= OperationFactory.createOperation("/");
              oper.setNumA(5);
              oper.setNumB(7);
              int result = oper.getResult();
              System.out.println(result);
         }
    }
    我们只需要输入运算符号,工厂就实例化出合适的对象,通过多态,返回父类的方式实现计算器的结果!
     
     
     
     
     
     
     
  • 相关阅读:
    android 通过GPS获取用户地理位置并监听位置变化
    Android Activity中启动另一应用程序的方法,无需得到类名
    每秒处理10万订单的支付架构 乐视集团
    Android进阶篇百度地图获取地理信息
    Windows 7 暗藏的管理功能上帝模式(GodMode)
    MSDN Webcast 微软SDLC最佳实践系列课程(3) 报表服务
    ALM Networks 开篇
    Delphi下如何使程序在Win7/Vista上用管理员权限运行
    2008年微软(北京).NET俱乐部年会 照片纪实
    如何打造大学生“亮剑团队”?
  • 原文地址:https://www.cnblogs.com/lizhaowen/p/6699436.html
Copyright © 2011-2022 走看看