使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制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工厂方法模式 什么是工厂方法模式? 工厂方法模式和简单工厂模式十分类似,大致结构是基本类似的.不同在于工厂方法模式对工厂类进行了进一步的抽象,将之前的一个工厂类抽象成了抽象工厂和工厂子类,抽象工 ...
随机推荐
- 60行从零开始自己动手写FutureTask是什么体验?
前言 在并发编程当中我们最常见的需求就是启动一个线程执行一个函数去完成我们的需求,而在这种需求当中,我们常常需要函数有返回值.比如我们需要同一个非常大的数组当中数据的和,让每一个线程求某一个区间内部的 ...
- pnpm 的 workspace 实现 monorepo 工程
前言 前端多个包管理的的方式一般都是采用monorepo的方式去管理,之前都是使用的lerna的workspace去管理.这段时间包管理切换到了pnpm上,它也有worksapce,可以支持monor ...
- 搭建 Webpack 项目步骤
前言 Node.js 就像是 Java 的虚拟机 + JDK,可以让 js 脱离浏览器沙盒,且提供模块机制.I/O 操作.数据库操作.网络操作等.Node.js 又提供了大量的库,NPM(类似于 Ma ...
- Shell 脚本报错 line x: [xxx: command not found
[root@VM-0-6-centos sh_scripts]# bash val.sh username: hello world! val.sh: line 5: [hello: command ...
- Java SE 18 新增特性
Java SE 18 新增特性 作者:Grey 原文地址:Java SE 18 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...
- C# using()的本质
" 程序世界没有秘密,所有答案都在源码里 " 01.点明观点 C#中,非托管资源使用之后必须释放,而using()是使用非托管资源的最佳方式,可以确保资源在代码块结束之后被正确释放 ...
- KingbaseES 缺少库文件问题
在工作中大家经常会遇到找不到某个so 的问题,这类可能是so文件缺失,或者是由于LD_LIBRARY_PATH 环境变量设置不当的原因. 1.库文件 我们通常把一些公用函数制作成函数库,供其它程序使用 ...
- springMVC配置时,静态资源和jsp文件路径没错但是访问时controller的请求报404错误。
springMVC配置时,静态资源和jsp文件路径没错但是访问时controller的请求报404错误. 1.场景 如果在web.xml中servlet-mapping的url-pattern设置的是 ...
- Win32简单图形界面程序逆向
Win32简单图形界面程序逆向 前言 为了了解与学习底层知识,从 汇编开始 -> C语言 -> C++ -> PE文件 ,直至今天的Win32 API,着实学的令我头皮发麻(笑哭). ...
- 5.云原生之Docker容器网络介绍与实践
转载自:https://www.bilibili.com/read/cv15185166/?from=readlist 例如, 当在一台未经过特殊网络配置的centos 或 ubuntu机器上安装完d ...