最近读《大话设计模式》有感,正好以前写过一个计算器,当时感觉写的很费力,而且要添加和修改某些功能总是要修改全部代码,十分吃力。现在倒知道了自己的不足之处,于是按照有规划地设计来重写一遍计算器。
下面是算法的图解,也是对我的代码的一个回顾和分析。
由于界面部分代码没有新意,于是我只介绍一下自己的逻辑部分:
先贴出代码
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()方法了。
下面是程序演示:
顺便吐槽一句,为什么不能批量上传图片= =。
相关推荐
在这个例子中,“设计模式计算器的设计”着重讨论了如何应用设计模式来构建一个高效且灵活的计算器系统。 首先,描述中提到的“代理类”是一个设计模式,它允许我们在不修改原始对象的情况下,为对象添加额外的功能...
简单工厂设计模式是一种常用的设计模式,它在C#编程中被广泛应用,特别是在创建对象时需要根据条件选择不同类型的实例时。在这个"计算器"项目中,我们可能会看到如何使用这种模式来构建不同类型的计算器,比如基本的...
在这个"设计模式之策略模式Android计算器实例"中,我们将探讨如何在Android应用中使用策略模式来实现一个计算器的功能。 首先,策略模式的核心思想是定义一系列算法,并将每个算法封装起来,使它们可以互相替换。...
在本文中,我们将深入探讨如何使用C#编程语言和设计模式来开发一个Windows计算器应用,同时结合提供的源码进行分析。C#是一种面向对象的、类型安全的编程语言,广泛应用于构建Windows桌面应用,而设计模式是软件工程...
一共使用了建造者模式、状态模式、命令模式、策略模式、单件模式这5个设计模式。 本次课程设计是开发一款有多个面板的计算器。不仅有针对日常生活“标准型”面板、针对理工科计算的“科学型”面板、针对于编程人员...
在编程领域,设计模式是一种解决常见问题的模板,可以提高代码的可读性、可维护性和可扩展性。本文将详细探讨如何在C#中应用简单工厂模式来设计一个计算器,实现基本的邻位四则运算。 简单工厂模式是创建型设计模式...
**Java简易计算器基于MVC设计模式的实现** 在软件开发中,MVC(Model-View-Controller)设计模式是一种常用架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。这个模式...
MVP(Model-View-Presenter)模式是一种软件设计模式,主要应用于用户界面的开发,尤其在Web和Windows应用程序中广泛使用。MVP模式的主要目的是提高代码的可测试性,分离业务逻辑与用户界面,使两者之间的耦合度降低...
简单工厂设计模式是一种常用的设计模式,它在软件工程中用于创建对象,特别是在需要根据特定条件创建不同类的对象时。在这个实现的计算器项目中,我们利用了简单工厂...这就是简单工厂设计模式在计算器项目中的应用。
01面向对象计算器_封装版 02面向对象计算器_继承多态虚方法版 03面向对象计算器_抽象类版 04面向对象计算器_接口版 ...06面向对象计算器_简单工厂模式 07委托多态计算器 08计算器终极版_插件机制(反射)
在“设计模式 简单工厂模式 简易计算器代码”这个主题中,我们将探讨如何使用简单工厂模式来实现一个简单的计算器。计算器是我们日常编程中常见的例子,因为它包含了多个操作,如加、减、乘、除等,这为我们展示了...
完成了,但感觉这也没啥特别的,程序界面黑布隆冬的,内部结构也是最最平常的面向对象,于是我应用了《大话设计模式》这本书中的第一个模式——简单工厂模式,看上去还不错。界面的话,也就是输出的语句变了,system...
在软件设计模式中,简单工厂模式是一种常用的创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。在这个案例中,"C++制作的简单工厂模式计算器"就是一个运用了简单工厂模式来构建计算器程序的...
采用工厂方法(Factory Method)设计模式,设计并实现一个多用能计算器。要求如下: ① 画出类图,定义每个类的属性和方法,并分析类之间的关系。 ② 实现多用能计算器,分别实现数值型(标量、向量和矩阵)计算、非...
这个是http://blog.csdn.net/dawanganban/article/details/9884681博客中java设计模式的源代码。下载前请先看《设计模式——工厂模式在开发中的应用》一文。
- 窗体设计:利用MFC的CDialog类创建主对话框,设计计算器的外观; - 编辑资源:创建CEdit控件作为显示区域,处理输入和输出; - 控件类实现:自定义按钮和编辑控件类,扩展其功能以满足高级计算需求; - 对话框...
设计计算器时,我们需要定义一系列的类来代表不同的组件,如操作数、运算符以及计算器本身。这些类应该包含相应的属性和方法,以实现加减乘除等基本运算。 核心类之一是`Calculator`,它作为整个计算过程的控制器。...
**设计目标:** 开发一款能够进行基本算术运算(加、减、乘、除)的简易计算器,该计算器将使用ARM微控制器LPC2138作为核心处理单元。 **总体方案:** - **主程序流程:** 初始化后调用键盘扫描程序,根据用户输入...
本项目是一个使用MVVM设计模式实现的iOS计算器应用,提供了完整的源码供学习者参考。 1. MVVM设计模式详解: MVVM模式由三个主要组件组成:Model、View和ViewModel。Model负责数据处理和业务逻辑,View负责显示...