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. 我在叽里呱啦折腾 DolphinScheduler 的日子

    作者简介:wade,叽里呱啦攻城狮一枚,曾就职于苏宁,同花顺等,9个月大粿粿的爸爸. 前言 "工欲善其事,必先利其器" 在 2019 年进行数仓建设时,选择一款易用.方便.高效的调 ...

  2. 跟我学Python图像处理丨基于灰度三维图的图像顶帽运算和黑帽运算

    摘要:本篇文章结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实现. 本文分享自华为云社区<[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽 ...

  3. Dart 导包时类名冲突

    import 'package:qingyuo_mobile/pages/slices/home_page/tech_slice.dart'; import 'package:qingyuo_mobi ...

  4. wbr 文本换行规则标签

    <wbr/>标签规定在文本中的何处适合添加换行符.如果文本太长,浏览器可能会在错误的位置换行,那么可以使用<wbr/>标签来添加单词换行时机. Talk is cheap. S ...

  5. Python小游戏——外星人入侵(保姆级教程)第一章 01创建Pygame窗口 02创建设置类Setting()

    系列文章目录 第一章:武装飞船 01:创建Pygame窗口以及响应用户输入 02:创建设置类Setting() 一.前期准备 1.语言版本 Python3.9.0 2.编译器 Pycharm2022 ...

  6. mac怎么清理DNS缓存

    可以通过Mac系统启动台功能,在其他页面打开终端进行操作即可. 1.打开终端 2.进入终端界面,输入sudo killall -HUP mDNSResponder命令执行即可.

  7. [开源内卷] .NET 定时任务 -- FreeScheduler 支持 cron、持久化、可变定时设置

    前言 卷了,卷了,卷了,最近太卷...这篇文章写了好几天了,由于同类型文章太多,排期到今天发布.实在不想卷,得罪了!各位定时任务开源大佬们! .NET 定时组件生态实在太强大了,写下此文只希望能供大家 ...

  8. 【面试题】如何去掉vue的url地址中的#号?及其原理?

    如何去掉vue的url地址中的#号?及其原理? 点击打开视频讲解更加详细 如何去掉vue的url地址中的#号? import Vue from 'vue'; import VueRouter from ...

  9. 「学习笔记」斜率优化dp

    目录 算法 例题 任务安排 题意 思路 代码 [SDOI2012]任务安排 题意 思路 代码 任务安排 再改 题意 思路 练习题 [HNOI2008]玩具装箱 思路 代码 [APIO2010]特别行动 ...

  10. Html飞机大战(八):子弹的移动和管理

    好家伙,这应该是这个小游戏最难的几个点之一了 现在我们要做出子弹射击的效果我们应该如何处理? 1.首先我们要确定几个变量和方法的关系 变量: 子弹  bullet  弹夹(用来装子弹的东西)bulle ...