zoukankan      html  css  js  c++  java
  • 工厂方法模式_计算器实现

    一、思想图

    二、相比简单工厂模式,实现了代码的开闭原则。即原来在switch里每增加一个功能,就写一个case,制造对象,而现在新增功能直接写一个方法即可。

    三、代码

      3.1抽取共同信息

      

    package com.xx.bean;
    
    /**
     * 工厂方法模式——父类(抽取固定模块)
     * @author phoebe
     *
     */
    public class CaculateBean {
    	private double a;
    	private double b;
    	private double result;
    	public double getA() {
    		return a;
    	}
    	public void setA(double a) {
    		this.a = a;
    	}
    	public double getB() {
    		return b;
    	}
    	public void setB(double b) {
    		this.b = b;
    	}
    	public double getResult() {
    		return result;
    	}
    	public void setResult(double result) {
    		this.result = result;
    	}
    	
    	
    	
    }
    

      3.2加法实现类/其他类类似

      

    package com.xx.function;
    
    import com.xx.bean.CaculateBean;
    
    
    /**
     * 加法类
     * @author phoebe
     *
     */
    public class Caculate_AddImpl extends CaculateBean{
    
    	@Override
    	public double getResult() {
    		return this.getA()+this.getB();
    	}
    
    	
    }
    

      3.3算数对象工厂

      

    package com.xx.factory;
    
    import com.xx.bean.CaculateBean;
    import com.xx.function.Caculate_AddImpl;
    import com.xx.function.Caculate_DivImpl;
    import com.xx.function.Caculate_MultiImpl;
    import com.xx.function.Caculate_SubImpl;
    
    
    /**
     * 算数对象工厂,新增功能时直接新增方法,方法和方法是隔离的,避免了修改原则
     * @author phoebe
     *
     */
    public class BeanFactory{
    	
    	//制造加法对象
    	public CaculateBean createAddBean() {
    		return new Caculate_AddImpl();
    	}
    
    	//制造减法对象
    	public CaculateBean createSubBean() {
    		return new Caculate_SubImpl();
    	}
    	
    	//制造减法对象
    	public CaculateBean createMultiBean() {
    		return new Caculate_MultiImpl();
    	}
    		
    		//制造减法对象
    	public CaculateBean createDivBean() {
    		return new Caculate_DivImpl();
    	}
    }
    

       3.4测试

      

    package com.xx.test;
    
    import com.xx.bean.CaculateBean;
    import com.xx.factory.BeanFactory;
    
    /**
     * 测试类
     * @author phoebe
     *
     */
    public class Caculate_Factory_method {
    	
    	public static void main(String[] args) {
    		CaculateBean addBean = new BeanFactory().createAddBean();
    		addBean.setA(1);
    		addBean.setB(2);
    		System.out.println(addBean.getResult());
    		
    	}
    	
    }
    
    Best Regards
  • 相关阅读:
    [Web] 被遗忘的知识点 XHTML
    [项目实践进阶篇] Android 项目中使用Ant + Groovy能干什么?
    使用Ant,第1部分:将Ant脚本引入Java项目
    [Web] 被遗忘的知识点 JavaScript加载管理最佳实践
    [Web] 被遗忘的知识点 iFrames(HTML)过时了没有?
    Android ProGuard
    stream.js
    GUID(全球唯一标识符)
    解析算术表达式
    LCG(linear congruential generator)伪随机数生成器
  • 原文地址:https://www.cnblogs.com/pecool/p/8227507.html
Copyright © 2011-2022 走看看