`

使用设计模式设计的计算器

 
阅读更多

        最近读《大话设计模式》有感,正好以前写过一个计算器,当时感觉写的很费力,而且要添加和修改某些功能总是要修改全部代码,十分吃力。现在倒知道了自己的不足之处,于是按照有规划地设计来重写一遍计算器。

        下面是算法的图解,也是对我的代码的一个回顾和分析。

         由于界面部分代码没有新意,于是我只介绍一下自己的逻辑部分:

         先贴出代码

        Calculator.java:

package SimpleFactory;

public class Calculator{
	private String operator;
	private double param1,  param2;
	
	public void setParam(String operator, double param1, double param2){
		this.operator = operator;
		this.param1 = param1;
		this.param2 = param2;
	}
	
	public double calc() throws ExcepZeroDiv{
		Factory fac = new Factory(operator);
		Operation oper = fac.creatOper();
		oper.setParam(param1, param2);
		return oper.getResult();
	}
}

class Factory {
	
	private String operator;
	
	public Factory(String operator){
		this.operator = operator;
	}
	
	public Operation creatOper(){
		Operation oper = null;
		try {
			oper = (Operation) Class.forName(operator).newInstance();
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			System.out.println("此操作不存在"+operator);
			e.printStackTrace();
		}
		return oper;
	}
}

 Calculator类是逻辑算法部分的主类,他负责将计算的参数(2个),计算的方法(类名,string形式)传给工厂类Factory

Factory直接根据类名初始化一个算法类(Class.forName(String name)),这里用到了一个接口Operation

package SimpleFactory;

public interface Operation {
	
	void setParam(double num1 ,double num2);
	
	double getResult() throws ExcepZeroDiv;

}

 

由于设置参数的方法都是一样的,于是定义了一个抽象类AbstractOper

package SimpleFactory;

public abstract class AbstractOper implements Operation{
	
	protected double param_num1,param_num2;
	
	public void setParam(double num1 , double num2) {
		param_num1 = num1;
		param_num2 = num2;
	}
	
}

 然后就可以自己随意定义算法类了

例如加法类OperAdd

package SimpleFactory;

public class OperAdd extends AbstractOper{

	public double getResult() { 
//		System.out.println("加法..");
		return this.param_num1+this.param_num2;
	}

}

这样的话,每个类的作用就分开了,而且几乎不用更改(这里可以在每个终端算法类的类名前声明final),

这样的话,要增加某种功能,只要在界面代码上添加按钮,并将按钮的ActionCommand设置为该算法类的

类名,同时增加该算法类,以及实现该类的geyResult()方法了。

下面是程序演示:



 

 

 

 

 顺便吐槽一句,为什么不能批量上传图片= =。

 

  • 大小: 22.9 KB
  • 大小: 18.7 KB
  • 大小: 18.5 KB
  • 大小: 18.9 KB
  • 大小: 18.2 KB
  • 大小: 20.2 KB
分享到:
评论

相关推荐

    设计模式计算器的设计

    在这个例子中,“设计模式计算器的设计”着重讨论了如何应用设计模式来构建一个高效且灵活的计算器系统。 首先,描述中提到的“代理类”是一个设计模式,它允许我们在不修改原始对象的情况下,为对象添加额外的功能...

    C#计算器 简单工厂设计模式

    简单工厂设计模式是一种常用的设计模式,它在C#编程中被广泛应用,特别是在创建对象时需要根据条件选择不同类型的实例时。在这个"计算器"项目中,我们可能会看到如何使用这种模式来构建不同类型的计算器,比如基本的...

    设计模式之策略模式Android计算器实例

    在这个"设计模式之策略模式Android计算器实例"中,我们将探讨如何在Android应用中使用策略模式来实现一个计算器的功能。 首先,策略模式的核心思想是定义一系列算法,并将每个算法封装起来,使它们可以互相替换。...

    c#+设计模式开发windows计算器加源码

    在本文中,我们将深入探讨如何使用C#编程语言和设计模式来开发一个Windows计算器应用,同时结合提供的源码进行分析。C#是一种面向对象的、类型安全的编程语言,广泛应用于构建Windows桌面应用,而设计模式是软件工程...

    Java多功能计算器+设计模式+开发文档

    一共使用了建造者模式、状态模式、命令模式、策略模式、单件模式这5个设计模式。 本次课程设计是开发一款有多个面板的计算器。不仅有针对日常生活“标准型”面板、针对理工科计算的“科学型”面板、针对于编程人员...

    C# 简单工厂模式 设计 计算器

    在编程领域,设计模式是一种解决常见问题的模板,可以提高代码的可读性、可维护性和可扩展性。本文将详细探讨如何在C#中应用简单工厂模式来设计一个计算器,实现基本的邻位四则运算。 简单工厂模式是创建型设计模式...

    java 简易计算器 mvc 设计模式

    **Java简易计算器基于MVC设计模式的实现** 在软件开发中,MVC(Model-View-Controller)设计模式是一种常用架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个模式...

    MVP模式计算器事例

    MVP(Model-View-Presenter)模式是一种软件设计模式,主要应用于用户界面的开发,尤其在Web和Windows应用程序中广泛使用。MVP模式的主要目的是提高代码的可测试性,分离业务逻辑与用户界面,使两者之间的耦合度降低...

    简单工厂设计模式实现的计算器

    简单工厂设计模式是一种常用的设计模式,它在软件工程中用于创建对象,特别是在需要根据特定条件创建不同类的对象时。在这个实现的计算器项目中,我们利用了简单工厂...这就是简单工厂设计模式在计算器项目中的应用。

    使用面向对象思想以及应用设计模式实现计算器

    01面向对象计算器_封装版 02面向对象计算器_继承多态虚方法版 03面向对象计算器_抽象类版 04面向对象计算器_接口版 ...06面向对象计算器_简单工厂模式 07委托多态计算器 08计算器终极版_插件机制(反射)

    设计模式 简单工厂模式 简易计算器代码

    在“设计模式 简单工厂模式 简易计算器代码”这个主题中,我们将探讨如何使用简单工厂模式来实现一个简单的计算器。计算器是我们日常编程中常见的例子,因为它包含了多个操作,如加、减、乘、除等,这为我们展示了...

    应用了设计模式之简单工厂模式的计算器

    完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...

    C++制作的简单工厂模式计算器

    在软件设计模式中,简单工厂模式是一种常用的创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。在这个案例中,"C++制作的简单工厂模式计算器"就是一个运用了简单工厂模式来构建计算器程序的...

    工厂设计模式之Java计算器产品.rar

    采用工厂方法(Factory Method)设计模式,设计并实现一个多用能计算器。要求如下: ① 画出类图,定义每个类的属性和方法,并分析类之间的关系。 ② 实现多用能计算器,分别实现数值型(标量、向量和矩阵)计算、非...

    设计模式——工厂模式在开发中的应用(简单计算器)

    这个是http://blog.csdn.net/dawanganban/article/details/9884681博客中java设计模式的源代码。下载前请先看《设计模式——工厂模式在开发中的应用》一文。

    VC++课程设计 计算器

    - 窗体设计:利用MFC的CDialog类创建主对话框,设计计算器的外观; - 编辑资源:创建CEdit控件作为显示区域,处理输入和输出; - 控件类实现:自定义按钮和编辑控件类,扩展其功能以满足高级计算需求; - 对话框...

    java课程设计报告_计算器设计报告

    设计计算器时,我们需要定义一系列的类来代表不同的组件,如操作数、运算符以及计算器本身。这些类应该包含相应的属性和方法,以实现加减乘除等基本运算。 核心类之一是`Calculator`,它作为整个计算过程的控制器。...

    ARM课程设计报告简易计算器设计

    **设计目标:** 开发一款能够进行基本算术运算(加、减、乘、除)的简易计算器,该计算器将使用ARM微控制器LPC2138作为核心处理单元。 **总体方案:** - **主程序流程:** 初始化后调用键盘扫描程序,根据用户输入...

    iOS计算器源码MVVM设计模式.zip

    本项目是一个使用MVVM设计模式实现的iOS计算器应用,提供了完整的源码供学习者参考。 1. MVVM设计模式详解: MVVM模式由三个主要组件组成:Model、View和ViewModel。Model负责数据处理和业务逻辑,View负责显示...

Global site tag (gtag.js) - Google Analytics