查看本章节

查看作业目录


需求说明:

编写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),卖家就会通过物流将商品邮寄给用户,使用简单工厂模式模拟这一过程。相关推荐

  1. 设计模式——简单工厂模式之女娲造人

    目录 一.定义 二.解决的问题 三.模式结构图 四.具体实例(女娲造人) 4.1 UML类图 4.2 代码 4.3 运行结果 一.定义 简单工厂模式又称为静态工厂方法模式,它属于类创建型模式. 在简单 ...

  2. Java初学者作业——编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额。

    返回本章节 返回作业目录 需求说明: 编写Java程序, 实现根据用户购买商品总金额, 计算实际支付的金额及所获得的购物券金额. 购买总金额达到或超过 1000元,按 8折优惠,送 200元的购物券: ...

  3. Java设计模式之简单工厂模式实验(软件工程综合实践课程第二周)

    实验目的 1 .理解软件设计的相关理论 : 2 .理解面向对象设计原则: 实验内容 1 .简单工厂模式实验: (1) 参考讲义上的代码,利用简单工厂模式完成计算器应用程序: (2) 画出计算器程序简单 ...

  4. JAVA,Swing实现点餐系统,使用简单工厂模式与观察者模式

    一. 题目要求 参考肯德基官网的信息模拟肯德基快餐店的收银系统,合理使用C++或Java或Python结合设计模式(2种以上)至少实现系统的以下功能: 1.正常餐品结算和找零. 2.基本套餐结算和找零 ...

  5. JAVA设计模式——工厂模式【简单工厂模式、工厂方法模式、抽象工厂模式】

    目录 简单工厂模式 传统方式 简单工厂模式 静态工厂模式 工厂方法模式 抽象工厂模式 工厂模式JDK-Calendar源码分析 工厂模式小结 简单工厂模式   看一个具体的需求 看一个披萨的项目:要便 ...

  6. 简单工厂模式(Java、Python)、工厂方法模式(Java、Python)

    目录 一.试画出简单工厂模式的模式结构图,并对模式进行分析 1.1 简单工厂模式结构图: 1.2 简单工厂模式的实现(Java) 1.3 简单工厂模式的优缺点 1.4 简单工厂模式实现(Python) ...

  7. 设计模式之简单工厂模式(Java 实现)

    设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...

  8. JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)

    在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的.但是在一些情况下, new操作符直接生成对象会带来一些问题.举例来说, 许多类型对象的创造需要一 ...

  9. java之设计模式工厂三兄弟之简单工厂模式

    [学习难度:★★☆☆☆,使用频率:★★★☆☆] 工厂模式是最常用的一类创建型设计模式,通常我们所说的工厂模式是指工厂方法模式,它也是使用频率最高的工厂模式.本章将要学习的简单工厂模式是工厂方法模式的& ...

最新文章

  1. 将cocos2dx项目从Visual Studio 迁移到 xcode
  2. 《LeetCode力扣练习》第12题 C语言版 (做出来就行,别问我效率。。。。)
  3. 简单选择排序 c代码
  4. LeetCode 1337. 方阵中战斗力最弱的 K 行(优先队列)
  5. 刀剑无双服务器显示404,刀剑无双如何开启GM命令 刀剑无双GM指令修改
  6. 数学教材里的神秘数表在国外红出圈,网友:引人入胜、猜不到结局
  7. Oracle 11g Release 1 (11.1) Oracle 本文索引的四种类型
  8. Linux系统文件用户共享,Linux操作系统下的共享文件夹用户设定
  9. 如何自学python-零基础如何自学成为Python高手?
  10. java random()_JAVA的Random类的用法详解
  11. es进行curl请求时报错:missing authentication token for REST request
  12. 设置树莓派屏幕常亮,禁止树莓派屏幕休眠
  13. Intent 简介与详解
  14. Chrome 插件推荐
  15. 同步通信 VS 异步通信
  16. 软件测试工程师的职业发展路线?
  17. P1873 砍树(简单二分)
  18. 如何快速的清除 灰鸽子 木马病毒 【附清除工具 以及 清除原理】
  19. 电磁兼容工程(Electromagnetic compatibility engineering Herry Ott )读书笔记-- 章10 数字电路接地
  20. PL-VIO(点线slam)学习笔记(持续更新)

热门文章

  1. C# oleDb方法读取Excel文件(我草 牛逼啊兄弟,我服了)select * from [计划上sheet$A3:D8]
  2. 网游防沉迷系统 明年有望全行业推行
  3. 2021年安全员-B证(山东省-2020版)考试APP及安全员-B证(山东省-2020版)找解析
  4. PullTube for Mac(在线视频下载工具)
  5. Clone succeeded, but checkout failed. drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
  6. 逆向-新年快乐(UPX加壳)-学习笔记
  7. npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.npm ER
  8. Libpcap和Qt的安装及数据包抓包、过滤、保存
  9. python中类的函数的调用
  10. python算法专项(五)——numpy基础、数据保存,方差、标准差、协方差、协方差矩阵