编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
查看本章节
查看作业目录
需求说明:
编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。
实现思路:
(1)创建商品Goods 类,声明String 类型的name,double 类型的price。定义一个包含 name 属性和 price 属性的有参构造方法。创建抽象方法getGoodsInfo(),目的是输出商品信息。
(2)创建帽子类 Hat、书籍类 Book 和鞋子类 Shoe,并让 3 个类继承抽象商品类 Goods,重写抽象方法。
(3)创建卖家类 SellerFactory,该类是简单工厂模式中的工厂角色类。创建静态方法 Goods sellGoods(String type, String name, double price),该方法用于返回商品对象,也是工厂角色的产品生产方法。在该方法内判断 type 的值,返回不同的商品对象。
(4) 创建工厂测试类 TestFactory, 在该类的程序入口main() 方 法 内,调用工厂类SellerFactory 的 工厂方 法 Goods sellGoods(String type, String name, double price), 获取具体产品实例,调用该实例的getGoodsInfo() 方法,输出该商品的具体信息。
实现代码:
商品Goods 类
public abstract class Goods {private String name;// 商品名称private double price; // 商品单价public Goods(String name, double price) {super();this.name = name;this.price = price;}public String getName() {return name;}public void setName(String name) {this.name = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}// 打印商品信息public void printGoodsInfo() {System.out.println("用户购买的商品是:" + this.getName() + ",价格是:" + this.getPrice() + "元");}
}
帽子类 Hat
public class Hat extends Goods {public Hat(String name, double price) {super(name, price);}
}
书籍类 Book
public class Book extends Goods {public Book(String name, double price) {super(name, price);}
}
鞋子类 Shoe
public class Shoe extends Goods {public Shoe(String name, double price) {super(name, price);}
}
卖家类 SellerFactory
public class SellerFactory {public static Goods sellGoods(String type, String name, double price) {Goods goods = null;// 判断用户购买的商品类型if ("帽子".equals(type)) {goods = new Hat(name, price);} else if ("书籍".equals(type)) {goods = new Book(name, price);} else if ("鞋子".equals(type)) {goods = new Shoe(name, price);}return goods;}
}
工厂测试类 TestFactory
public class TestFactory2 {public static void main(String[] args) {Goods goods = SellerFactory.sellGoods("书籍", "《大话设计模式》", 66);goods.printGoodsInfo();}
}
编写Java程序,用户在网上购买商品(good),当用户买了一本书(book)、一顶帽子(hat)或者买了一双鞋子(shoe),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。相关推荐
- 设计模式——简单工厂模式之女娲造人
目录 一.定义 二.解决的问题 三.模式结构图 四.具体实例(女娲造人) 4.1 UML类图 4.2 代码 4.3 运行结果 一.定义 简单工厂模式又称为静态工厂方法模式,它属于类创建型模式. 在简单 ...
- Java初学者作业——编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额。
返回本章节 返回作业目录 需求说明: 编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额. 购买总金额达到或超过 1000元,按 8折优惠,送 200元的购物券: ...
- Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)
实验目的 1 .理解软件设计的相关理论 : 2 .理解面向对象设计原则: 实验内容 1 .简单工厂模式实验: (1) 参考讲义上的代码,利用简单工厂模式完成计算器应用程序: (2) 画出计算器程序简单 ...
- JAVA,Swing实现点餐系统,使用简单工厂模式与观察者模式
一. 题目要求 参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零 ...
- JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】
目录 简单工厂模式 传统方式 简单工厂模式 静态工厂模式 工厂方法模式 抽象工厂模式 工厂模式JDK-Calendar源码分析 工厂模式小结 简单工厂模式 看一个具体的需求 看一个披萨的项目:要便 ...
- 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)
目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...
- 设计模式之简单工厂模式(Java 实现)
设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...
- java之设计模式工厂三兄弟之简单工厂模式
[学习难度:★★☆☆☆,使用频率:★★★☆☆] 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式.本章将要学习的简单工厂模式是工厂方法模式的& ...
最新文章
- 将cocos2dx项目从Visual Studio 迁移到 xcode
- 《LeetCode力扣练习》第12题 C语言版 (做出来就行,别问我效率。。。。)
- 简单选择排序 c代码
- LeetCode 1337. 方阵中战斗力最弱的 K 行(优先队列)
- 刀剑无双服务器显示404,刀剑无双如何开启GM命令 刀剑无双GM指令修改
- 数学教材里的神秘数表在国外红出圈,网友:引人入胜、猜不到结局
- Oracle 11g Release 1 (11.1) Oracle 本文索引的四种类型
- Linux系统文件用户共享,Linux操作系统下的共享文件夹用户设定
- 如何自学python-零基础如何自学成为Python高手?
- java random()_JAVA的Random类的用法详解
- es进行curl请求时报错:missing authentication token for REST request
- 设置树莓派屏幕常亮,禁止树莓派屏幕休眠
- Intent 简介与详解
- Chrome 插件推荐
- 同步通信 VS 异步通信
- 软件测试工程师的职业发展路线?
- P1873 砍树(简单二分)
- 如何快速的清除 灰鸽子 木马病毒 【附清除工具 以及 清除原理】
- 电磁兼容工程(Electromagnetic compatibility engineering Herry Ott )读书笔记-- 章10 数字电路接地
- PL-VIO(点线slam)学习笔记(持续更新)
热门文章
- C# oleDb方法读取Excel文件(我草 牛逼啊兄弟,我服了)select * from [计划上sheet$A3:D8]
- 网游防沉迷系统 明年有望全行业推行
- 2021年安全员-B证(山东省-2020版)考试APP及安全员-B证(山东省-2020版)找解析
- PullTube for Mac(在线视频下载工具)
- Clone succeeded, but checkout failed. drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
- 逆向-新年快乐(UPX加壳)-学习笔记
- npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.npm ER
- Libpcap和Qt的安装及数据包抓包、过滤、保存
- python中类的函数的调用
- python算法专项(五)——numpy基础、数据保存,方差、标准差、协方差、协方差矩阵