码迷,mamicode.com
首页 > 其他好文 > 详细

简单工厂模式_计算器实现

时间:2018-01-07 00:41:15      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:main   cat   private   简单工厂模式   扩展性   case   system   标识   div   

优点:

  1.不用自己再去new对象,工厂会根据给的标识,自动替你new出一个你想要的实现类对象。

  2.一定程度上在加减乘除之间实现了解耦合。提高了代码的复用性和扩展性。

一、整体思想图:

技术分享图片

 

 

 二、代码实现

  2.1 父类

package com.design.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;
	}
	
	
	
}

  2.2 加法模块:

package com.design.calimpl;

import com.design.bean.CaculateBean;

/**
 * 加法模块
 * @author phoebe
 *
 */
public class Caculate_add extends CaculateBean {

	@Override
	public double getResult() {
		return this.getA()+this.getB();
	}
}

  2.3减法模块/乘法模块/除法模块和加法模块一样

  2.4产生具体实例化对象工厂

  

package com.design.factory;

import com.design.bean.CaculateBean;
import com.design.calimpl.Caculate_add;
import com.design.calimpl.Caculate_div;
import com.design.calimpl.Caculate_multi;
import com.design.calimpl.Caculate_sub;
import com.design.util.myException;

/**
 * 控制具体采用哪一个实现类
 * @author phoebe
 *
 */
public class CaculateFactory {

	public static CaculateBean getBeanFactory(String str){
		switch(str){
			case "+" :
				return new Caculate_add();
			case "-" :
				return new Caculate_sub();
			case "*" :
				return new Caculate_multi();
			case "/" :
				return new Caculate_div();
			default:
			try {
				throw new myException();
			} catch (myException e) {
				e.printStackTrace();
			}
		}
		return null;
	}
}

   2.5测试代码

  

package com.design.test;

import java.util.Scanner;

import com.design.bean.CaculateBean;
import com.design.factory.CaculateFactory;

/**
 * 测试
 * @author phoebe
 *
 */
public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double a = sc.nextDouble();
		double b = sc.nextDouble();
		String tig = sc.next();
		CaculateBean caculateBean = CaculateFactory.getBeanFactory(tig);
		caculateBean.setA(a);
		caculateBean.setB(b);
		System.out.println(caculateBean.getResult());
	}
}

 

简单工厂模式_计算器实现

标签:main   cat   private   简单工厂模式   扩展性   case   system   标识   div   

原文地址:https://www.cnblogs.com/pecool/p/8215649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!