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. 1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程

    1.使用简单工厂模式设计能够实现包含加法(+).减法(-).乘法(*).除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果.要求使用相关的工具绘制UML类图并严格按照类图的设计编写程 ...

  2. java之设计模式工厂三兄弟之工厂方法模式

    [学习难度:★★☆☆☆,使用频率:★★★★★] 简单工厂模式虽然简单,但存在一个很严重的问题.当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建不同的产品,这必定要修改工厂类的源代码 ...

  3. JAVA设计模式(01):创建型-工厂模式【工厂方法模式】(Factory Method)

    简单工厂模式尽管简单,但存在一个非常严重的问题.当系统中须要引入新产品时,因为静态工厂方法通过所传入參数的不同来创建不同的产品,这必然要改动工厂类的源码,将违背"开闭原则".怎样实 ...

  4. Java设计模式学习记录-简单工厂模式、工厂方法模式

    前言 之前介绍了设计模式的原则和分类等概述.今天开启设计模式的学习,首先要介绍的就是工厂模式,在介绍工厂模式前会先介绍一下简单工厂模式,这样由浅入深来介绍. 简单工厂模式 做法:创建一个工厂(方法或类 ...

  5. 工厂方法模式(JAVA反射)

    简单工厂模式的不足     在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类.简单工厂模式最大的缺点是当有新 ...

  6. 简单工厂模式,工厂方法模式,抽象工厂模式,spring的狂想

    菜鸟D在项目中遇见一个比较纠结的高耦合,所以就想办法来解耦.情况是这样的:系统通过用户选择treeview控件的节点判断调用不同的处理,这些处理中某些东西又是类似的.同事的建议是采用简单工厂,耦合就耦 ...

  7. 设计模式之工厂方法模式(Factory Method Pattern)

    一.工厂方法模式的诞生 在读这篇文章之前,我先推荐大家读<设计模式之简单工厂模式(Simple Factory Pattern)>这篇文档.工厂方法模式是针对简单工厂模式中违反开闭原则的不 ...

  8. 深入浅出设计模式——工厂方法模式(Factory Method)

    介绍在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式.它解决的仍然是软件设计中与创建对象有关的问题.它可以更好的处理客户的需求变化. 引入我 ...

  9. iOS 工厂方法模式

    iOS工厂方法模式 什么是工厂方法模式? 工厂方法模式和简单工厂模式十分类似,大致结构是基本类似的.不同在于工厂方法模式对工厂类进行了进一步的抽象,将之前的一个工厂类抽象成了抽象工厂和工厂子类,抽象工 ...

随机推荐

  1. Linux 11 安装Tomcat

    参考源 https://www.bilibili.com/video/BV187411y7hF?spm_id_from=333.999.0.0 版本 本文章基于 CentOS 7.6 这里使用解压缩方 ...

  2. Redis 09 基数

    参考源 https://www.bilibili.com/video/BV1S54y1R7SB?spm_id_from=333.999.0.0 版本 本文章基于 Redis 6.2.6 概述 Redi ...

  3. 套接字传输(TCP简单使用)

  4. 熔断器-Hystrix。。。之降级方法

    与Feign的Fallback降级方法不同,这个hystrix降级方法是写在被调用方的 需要依赖: <dependency> <groupId>org.springframew ...

  5. OID天下第一 (双指针,LCT,线段树)

    题面 或曰:"笑长天下第一!",OID 喜得合不拢嘴:"哈哈哈哈哈哈--" OneInDark 是天下第一的. OneInDark 给了你一个 n n n 个点 ...

  6. CF1167F Scalar Queries (线段树/树状数组)

    题意 题解 对于[l,r]中的一个数,不论[l,r]有多大,只有比它小的数可以影响到它的排名,那么就可以把ai从小到大排序,一个一个加入线段树中,线段树中下表为 i 的是ai(原来的位置,不是排序后的 ...

  7. Cannot resolve method 'println(java.lang.String)'

    jsp文件中println爆红 <% int sum = 0; for (int i = 1; i <=100 ; i++) { sum+=i; } out.println("& ...

  8. yum install lrzsz

    yum install lrzsz rz:从本地上传文件至服务器 sz filename:从服务器下载文件至本地

  9. Go编译过程

    一. Go编译流程 二.过程说明 1. 词法解析 读取Go源文件,将字符序列转换为符号(token)序列,比如将":="转换为_Define 代码中的标识符.关键字.运算符和分隔符 ...

  10. 【问题解决】Debian更新源提示InRelease已过期

    问题 本人日常用 Debian10 今天在更新源(apt update) 时,出现InRelease文件过期的问题 E: http://mirrors.163.com/debian/dists/bus ...