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

优点:

  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());
	}
}

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

时间: 2024-11-07 06:41:46

简单工厂模式_计算器实现的相关文章

简单工厂模式——MFC计算器实现

设计模式是重构的目标,它在代码复用和扩展方面有着非常重要的作用.学习面向对象,重构和设计模式的重要性自然不言而喻.那么,学习设计模式需要与软件设计,软件编码相结合起来,以例子为驱动.本文将通过MFC计算器的实现来学习简单工厂模式. 无论怎么样,首先应该抽象出MFC计算器的实体类.通过查找名词,动名词等等,准确找到实体类是第一步. 显然,它的核心实体类是Operator运算类.细想之,它的实现恰好与简单工厂密切相关. 简单工厂模式解释:  简单工厂模式(Simple Factory Pattern

(二)设计模式之PHP项目应用(简单工厂模式:计算器)

1 简单工厂模式简介 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例. 2 模式组成 1)工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑.工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象. 2)抽象产品(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口. 3)具体产品(Concrete Product)角色 是简单工厂模式的创建目标,所

设计模式_创建型模式_简单工厂模式_案例

使用简单工厂模式设计一个可以创建不同几何形状(如圆形.方形和三角形等)的绘图工具, 每个几何图形都具有绘制draw()和擦除erase()两个方法, 要求在绘制不支持的几何图形时,提示一个UnSupportedShapeException. 结构图如下: AbstractDrawTools  所有绘图工具的基类,是个抽象工厂类,抽取了三个绘图工具的共有方法Draw() Erase()当成抽象方法 这里简化了工厂类,把工厂类中的创建对象的静态方法移植到这个类中. CaspuleTool  胶囊绘图

简单工厂模式的C++实现

用简单工厂模式实现一个计算器类: 1 #include <iostream> 2 #include <string> 3 4 using namespace std; 5 6 class Operation 7 { 8 public: 9 Operation(double numA = 0, int numB = 0) : numberA(numA), numberB(numB) 10 { 11 } 12 virtual ~Operation() 13 { 14 cout <

设计模式—简单工厂模式

设计模式之简单工厂模式 看书学习设计模式,书本来源<大话设计模式>,啃一啃怎么样设计程序 在"大话"这本书中写简单工厂模式用计算器为例来说明,其实是最简单的面向接口的编程思维,不依赖与具体的实现,而重点考虑接口.这是比较重要的思维上的转变. 重点: 1.通过继承,造成多态属性,然后在子类中实现父类的接口,在不同的子类中进行不同的接口实现.直接调用实现的接口方法得到最后的值,这一种思维够趣味 2.做增量,尽量不修改之前的,靠增加代码来更改需求 3.最通俗的说法,高内聚,低耦合

【iOS开发系列】用简单工厂模式理解OC反射机制

// 在iOS开发中,简单工厂模式使用得并不多.但是.我认为这是OC反射机制很好的一个例子, // 所以本文将以计算器为例,讲解简单工厂模式和OC的反射机制. // [简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类( // 这些产品类继承自一个父类或接口)的实例.该模式中包含的角色及其职责:工厂角色.抽 // 象产品角色.具体产品角色] // --百度百科 简单工厂模式 // 上面这句话可能不怎么好理解,我在网上找到了一个例子,可能例子本身不能完全解释这个 // 设

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v

简单工厂模式 - 怎样实现高逼格的计算器(C#)

1. 面向过程的计算器 static void Main(string[] args) { //面向过程的计算器 try { Console.WriteLine("请输入数字A: "); string strNumA = Console.ReadLine(); Console.WriteLine("请选择运算符号(+.-.*./): "); string strOperate = Console.ReadLine(); Console.WriteLine("

学习大话设计模式01_简单工厂模式(简易计算器)

1 /** 2 * 面向对象(运算类) 3 * 简易计算器 4 * @author Monica 5 * 6 */ 7 public class Operation { 8 private double numberA = 0; 9 private double numberB = 0; 10 11 //虚函数 12 public double GetResult() { 13 double result = 0; 14 return result; 15 } 16 17 public doub