查看本章节

查看作业目录


需求说明:

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

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

  2. 编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)

    查看本章节 查看作业目录 需求说明: 几个朋友到游乐场游玩,大家投票选择出行方式.如果选择"A"最多的话,表示选择的交通工具是公交车(Bus):如果选择"B"最 ...

  3. Java 设计模式系列(二)简单工厂模式和工厂方法模式

    Java 设计模式系列(二)简单工厂模式和工厂方法模式 实现了创建者和调用者的分离.分为:简单工厂模式.工厂方法模式.抽象工厂模式 简单工厂模式.工厂方法模式都很简单,就不详细介绍了. 一.简单工厂 ...

  4. java:面向对象(多态,final,抽象方法,(简单工厂模式即静态方法模式),接口)

    * 生活中的多态:同一种物质,因环境不同而表现不同的形态. * 程序中多态:同一个"接口",因不同的实现而执行不同的操作. * 多态和方法的重写经常结合使用,子类重写父类的方法,将 ...

  5. Java设计模式(一) 简单工厂模式不简单

    摘要:本文介绍了简单工厂模式的概念,优缺点,实现方式,以及结合Annotation和反射的改良方案(让简单工厂模式不简单).同时介绍了简单工厂模式(未)遵循的OOP原则.最后给出了简单工厂模式在JDB ...

  6. Java设计模式2:简单工厂模式

    简单工厂模式 简单工厂模式是类的创建模式,又叫做静态工厂方法模式.简单工厂模式由一个工厂对象决定生产出哪一种产品类的实例. 为什么要使用简单工厂模式 原因很简单:解耦. A对象如果要调用B对象,最简单 ...

  7. Java设计模式之工厂模式(简单工厂模式+工厂方法模式)

    摘自http://blog.csdn.net/jason0539/article/details/23020989 在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是 ...

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

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

  9. Java反射+简单工厂模式总结

    除了 new 之外的创建对象的方法 通过 new 创建对象,会使得程序面向实现编程,先举个例子,某个果园里现在有两种水果,一种是苹果,一种是香蕉,有客户想采摘园子里的水果,要求用get()方法表示即可 ...

随机推荐

  1. sonic 安装记录

    https://github.com/valeriansaliou/sonic $ rustc --versionrustc 1.50.0-dev ubantu环境 rocksdb 安装依赖 apt ...

  2. NSString类里有个hash

    实际编程总会涉及到比较两个字符串的内容,一般会用 [string1 isEqualsToString:string2] 来比较两个字符串是否一致.对于字符串的isEqualsToString方法,需要 ...

  3. 【Linux】【Shell】【Basic】流程控制

    1. 选择执行: 1.1. if 单分支的if语句: if 测试条件 then 代码分支 fi 双分支的if语句: if 测试条件; then 条件为真时执行的分支 else 条件为假时执行的分支 f ...

  4. 学习Oracle遇到的实际问题(持续更新)

    有三个用户参与这个事情: system用户,拥有表manager. sys create了一个用户item,并赋予权限: SQL> GRANT SELECT ON SYSTEM.MANAGER ...

  5. 深入浅出 Docker

    一.什么Docker 从作用的角度: Docker是一个为开发人员和系统管理员开发.迁移和运行应用程序的平台.应用程序通过Docker打包成Docker Image后,可以实现统一的方式来下载.启动. ...

  6. 【HarmonyOS】【DevEco Studio】NOTE02 :Create a  “Hello World ”Application

    Author:萌狼蓝天 StudyTime:2021/12/06 Version:3.0 Beta1 包结构 src | --> resource 资源文件目录 | --> layout/ ...

  7. jQuery选择器整理+知识总结

    jQuery选择器 没有不会遗忘的知识,还是做个总结吧! 一.基本分类 jQuery选择器大致可以分为两类,基本选择器和过滤选择器,总体结构体系如下:   二.基本选择器 基本选择器又可以分为三种,分 ...

  8. Windows下安装xampp的PHP扩展(redis为例)

    (1)PHP的windowns扩展下载网址:https://windows.php.net/downloads/pecl/releases/ (2)Ctrl+f查询你要下载的扩展名 注意:扩展的版本要 ...

  9. powerdesigner给列加上注释步骤

    powerdesigner给列加上注释步骤如图:

  10. 系统分析师教程(张友生)高清pdf下载

    最近准备考系统分析师,故找了一本张又生编著的<系统分析师教程>的电子书,本来想买本书,可惜有点小贵,舍不得,故寻找电子版下载,花了不少时间才找到,现在分享给大家. http://item. ...