使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
2、使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。
抽象产品接口:
package gongchang;
public interface type {
double play(double num1,double num2);
}
具体产品:
package gongchang;
public class Chen implements type {
@Override
public double play(double num1, double num2) {
// TODO 自动生成的方法存根
System.out.printf("\n%.3fx%.3f=",num1,num2);
return num1*num2;
}
}
package gongchang;
public class Chu implements type {
@Override
public double play(double num1, double num2) {
// TODO 自动生成的方法存根
System.out.printf("\n%.3f/%.3f=",num1,num2);
if(num2==0) {
System.out.println("输入的数据分母不能为零");
return 0;
}
return num1/num2;
}
}
package gongchang;
public class Jia implements type {
@Override
public double play(double num1, double num2) {
// TODO 自动生成的方法存根
System.out.printf("\n%.3f+%.3f=",num1,num2);
return num1+num2;
}
}
package gongchang;
public class Jian implements type {
@Override
public double play(double num1, double num2) {
// TODO 自动生成的方法存根
System.out.printf("\n%.3f-%.3f=",num1,num2);
return num1-num2;
}
}
抽象工厂:
package gongchang;
public interface typefactory {
public type createfactory();
}
具体工厂:
package gongchang;
public class Chenfactory implements typefactory {
@Override
public type createfactory() { //具体工厂生产乘法对象
// TODO 自动生成的方法存根
type ty=new Chen();
return ty;
}
}
package gongchang;
public class Chufactory implements typefactory {
@Override
public type createfactory() { //具体工厂生产除法对象
// TODO 自动生成的方法存根
type ty=new Chu();
return ty;
}
}
package gongchang;
public class Jiafactory implements typefactory {
@Override
public type createfactory() {
// TODO 自动生成的方法存根
type ty=new Jia();
return ty;
}
}
package gongchang;
public class Jianfactory implements typefactory {
@Override
public type createfactory() { //具体工厂生产减法
// TODO 自动生成的方法存根
type ty=new Jian();
return ty;
}
}
测试
package gongchang;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
// TODO 自动生成的方法存根
typefactory factory1,factory2,factory3,factory4;//抽象工厂
type type1,type2,type3,type4; //抽闲产品
//创建一个实现加法的运算工厂
factory1=new Jiafactory(); //具体工厂生产加法
type1=factory1.createfactory(); //由具体工厂生产加法对象
System.out.println( type1.play(3, 5));
// //键盘输入字符串
// Scanner scanner=new Scanner(System.in);
// System.out.println("请输入第一个数值:");
// double num1=scanner.nextInt();
// System.out.println("请输入第二个数值:");
// double num2=scanner.nextInt();
//
//创建一个实现加法的运算工厂
// factory2=new Jianfactory(); //具体工厂实现减法
// type2=factory2.createfactory(); //生产具体产品减法
// System.out.println(type2.play(num1, num2));
// //创建一个实现乘法的运算工厂
factory3=new Chenfactory();//具体工厂生产乘
type3=factory3.createfactory();//乘法产品
System.out.println(type3.play(2.1,3));
创建一个实现除法的运算工厂
factory4=new Chufactory();//具体工厂生产除
type4=factory4.createfactory();//除法产品
System.out.println(type4.play(1,2));
}
}
工厂方法模式:符合开闭原则,在简单工厂模式的基础上进行改进。
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实的更多相关文章
- 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...
- java之设计模式工厂三兄弟之工厂方法模式
[学习难度:★★☆☆☆,使用频率:★★★★★] 简单工厂模式虽然简单,但存在一个很严重的问题.当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码 ...
- JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)
简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实 ...
- Java设计模式学习记录-简单工厂模式、工厂方法模式
前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类 ...
- 工厂方法模式(JAVA反射)
简单工厂模式的不足 在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类.简单工厂模式最大的缺点是当有新 ...
- 简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想
菜鸟D在项目中遇见一个比较纠结的高耦合,所以就想办法来解耦.情况是这样的:系统通过用户选择treeview控件的节点判断调用不同的处理,这些处理中某些东西又是类似的.同事的建议是采用简单工厂,耦合就耦 ...
- 设计模式之工厂方法模式(Factory Method Pattern)
一.工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读<设计模式之简单工厂模式(Simple Factory Pattern)>这篇文档.工厂方法模式是针对简单工厂模式中违反开闭原则的不 ...
- 深入浅出设计模式——工厂方法模式(Factory Method)
介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式.它解决的仍然是软件设计中与创建对象有关的问题.它可以更好的处理客户的需求变化. 引入我 ...
- iOS 工厂方法模式
iOS工厂方法模式 什么是工厂方法模式? 工厂方法模式和简单工厂模式十分类似,大致结构是基本类似的.不同在于工厂方法模式对工厂类进行了进一步的抽象,将之前的一个工厂类抽象成了抽象工厂和工厂子类,抽象工 ...
随机推荐
- Golang 汇编asm语言基础学习
Golang 汇编asm语言基础学习 一.CPU 基础知识 cpu 内部结构 cpu 内部主要是由寄存器.控制器.运算器和时钟四个部分组成. 寄存器:用来暂时存放指令.数据等对象.它是一个更快的内存. ...
- ApacheCon 2020 参会指南
每年一度的 Apache 北美大会因为疫情的原因转到线上来举行了, 这次会议的主题是 ApacheCon@Home, 也就是说借助网络我们可以足不出户就可以参加 Apache 大会了.今年的会议为了针 ...
- LuoguP5022 旅行 (割点,基环树)
// luogu-judger-enable-o2 #include <cstdio> //#include <iostream> #include <cstring&g ...
- Redis 11 配置
参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 基本配置 Re ...
- Docker 15 Compose
参考源 https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0 https://www.bilibili.com/vid ...
- java-servlet-EL表达式和java标签
1 Servlet线程安全问题 1st. 为什么说servlet会有线程安全问题? 容器默认情况下,对于某个servlet,只会创建一个实例. 容器收到一个请求,就 ...
- java-Servlet生命周期与jsp
容器如何处理请求资源路径? 比如,在浏览器地址栏输入:ip地址路径/abc.html. Step1.默认访问的是一个servlet,会从web.xml中查找有没有匹配的servlet. ...
- StarRocks 运维工具 StarGo
注:本文主要内容均来源 StarRocks 官网 https://docs.starrocks.com/zh-cn/main/administration/stargo StarGo 是一个用于管理多 ...
- java数组---初始化
public class ArrayDemo { public static void main(String[] args) { int[] a={1,2,3,4,5,6,7,8,9}; //静态初 ...
- 第一百篇:JS异步
好家伙,打工人要打工,博客会更新的没有以前频繁了 芜湖,一百篇了,这篇写一个比较难的异步(其实并不难理解,主要是为promise铺垫) 老样子,先补点基础: 1.进程 来吧,新华字典 大 ...