编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)
查看本章节
查看作业目录
需求说明:
几个朋友到游乐场游玩,大家投票选择出行方式。如果选择“A”最多的话,表示选择的交通工具是公交车(Bus);如果选择“B”最多的话,表示选择的交通工具是的士(Taxi);如果选择“C”最多的话,就表示选择的交通工具是地铁(Subway)。请使用程序来模拟这一结果。
实现思路:
(1)项目中创建简单工厂模式中的抽象产品角色,即交通工具类 Vehicle,该类使用abstract 修饰。在Vehicle 类中,声明 double 类型的实例变量 mph,表示交通工具的时速。创建 void getInfo()抽象方法,用于打印交通工具的信息。
(2)创建简单工厂模式中的具体产品角色,分别是公交车类 Bus,地铁类 Subway 和的士类 Taxi,3 个类都需 要继承 Vehicle 类,然后重写getInfo方法,输出具体时速信息。
(3)创建简单工厂模式中的工厂类 VehicleFactory。在该类中,创建共有静态方法 Vehicle chooseVehicle (String mode),该方法实现了选择交通工具的功能。在该方法内,根据 mode 值,返回选择的交通工具对象。
(4)创建测试类 TestVehicleFactory,在该类的 main() 方法中,调用 VehicleFactory 类的静态方法 choose Vehicle(String mode),得到返回的 Vehicle 对象。调用该对象的 getInfo() 方法,打印出该交通工具的信息。
实现代码:
交通工具类 Vehicle
public abstract class Vehicle {
public abstract void getInfo();
}
公交车类 Bus
public class Bus extends Vehicle {
public double mph = 25;
@Override
public void getInfo() {
System.out.println("选择的交通工具是:公交车,时速是" + this.mph + "英里/小时");
}
}
地铁类 Subway
public class Subway extends Vehicle {
public double mph = 60;
@Override
public void getInfo() {
System.out.println("选择的交通工具是:地铁,时速是" + this.mph + "英里/小时");
}
}
的士类 Taxi
public class Taxi extends Vehicle {
public double mph = 35;
@Override
public void getInfo() {
System.out.println("选择的交通工具是:的士,时速是" + this.mph + "英里/小时");
}
}
工厂类 VehicleFactory
public class VehicleFactory {
// 工厂类的方法
public static Vehicle chooseVehicle(String mode) {
Vehicle vehicle = null;
// 根据投票结果,选择出行方式
if ("A".equals(mode)) {
vehicle = new Bus();
} else if ("B".equals(mode)) {
vehicle = new Taxi();
} else if ("C".equals(mode)) {
vehicle = new Subway();
}
return vehicle;
}
}
测试类 TestVehicleFactory
public class TestVehicleFactory {
public static void main(String[] args) {
Vehicle vehicle = VehicleFactory.chooseVehicle("C");
vehicle.getInfo();
}
}
编写Java程序,几个朋友到游乐场游玩,大家投票选择出行方式。使用程序来模拟这一结果。(工厂模式示例Demo)的更多相关文章
- 微信小程序分享至朋友圈的方法
最近研究怎么实现微信小程序分享至朋友圈,对就是朋友圈. 微信小程序目前没有直接提供方法来将小程序分享至朋友圈,不过可以采用曲线救国的方式来达到目的. 方法分两步: 1.通过浏览器将希望分享的东西风向至 ...
- Java设计模式2:简单工厂模式
简单工厂模式 简单工厂模式是类的创建模式,又叫做静态工厂方法模式.简单工厂模式由一个工厂对象决定生产出哪一种产品类的实例. 为什么要使用简单工厂模式 原因很简单:解耦. A对象如果要调用B对象,最简单 ...
- 女娲造人引发思考之Java设计模式:工厂模式
目录 工厂模式的几种形态 简单工厂模式 示例 结构 优缺点 女娲抟土造人 工厂方法模式 结构 女娲举绳造人 抽象工厂模式 结构 女娲造万物 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例 ...
- Java设计模式(三) 抽象工厂模式
原创文章,同步发自作者个人博客,转载请注明出处 http://www.jasongj.com/design_pattern/abstract_factory/ 抽象工厂模式解决的问题 上文<工厂 ...
- 《JAVA与模式》之简单工厂模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简单工厂模式是由一个工厂 ...
- Java设计模式之【工厂模式】(简单工厂模式,工厂方法模式,抽象工厂模式)
Java设计模式之[工厂模式](简单工厂模式,工厂方法模式,抽象工厂模式) 工厂模式出现的原因 在java中,创建一个对象最简单的方法就是使用new关键字.但在一些复杂的业务逻辑中,创建一个对象不只需 ...
- Java设计模式—工厂方法模式&抽象工厂模式
工厂方法模式与抽象工厂模式都是设计模式中重要而且常见的模式. 工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 通用类图如下: 在 ...
- Java简单工厂模式
Java简单工厂模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述简单工厂模式的:简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式.简 ...
- 35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n); (2)编写一个类:ClassA来实现接口InterfaceA,实现int method(int n)接口方 法时,要求计算1到n的和; (3)编写另一个类:ClassB来实现接口InterfaceA,实现int method(int n)接口 方法时,要求计算n的阶乘(n
35.按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现in ...
随机推荐
- SQL count和sum
count(1).count(*)与count(列名)的执行区别 count(1) and count(字段) 两者的主要区别是 (1) count(1) 会统计表中的所有的记录数,包含字段为null ...
- 【Java多线程】线程池-ThreadPoolExecutor
ThreadPoolExecutor提供了四个构造方法: 我们以最后一个构造方法(参数最多的那个),对其参数进行解释: public ThreadPoolExecutor(int corePoolSi ...
- CF190C STL 题解
* 题意 :给出只会出现 pair 和 int 的字符串 , 要求按照给出 pair 和 int 的顺序 , 添加 ' < ' , ' > ' , ' , ' 这三个符号 , ...
- 带你了解 Angular 与 Angular JS
Angular 是一个基于 TypeScript 的开源客户端框架,专为构建 Web 应用程序而设计. 另一方面,AngularJS 是 Angular 的第一个版本,用纯 JavaScript 编写 ...
- [BUUCTF]PWN7——[OGeek2019]babyrop
[BUUCTF]PWN7--[OGeek2019]babyrop 题目网址:https://buuoj.cn/challenges#[OGeek2019]babyrop 步骤: 例行检查,32位,开启 ...
- 工时资源(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 资源既然各种导入都会发生些不可描述的事,那就手工建立吧.但是问题又来了,资源还分种类的:工时资源.材料资源和成本资源. 好 ...
- 替换错误Table.ReplaceErrorValues(Power Query 之 M 语言)
数据源: 任意数据源,数据中有错误值 目标: 将错误值替换为0 操作过程: [转换]>[替换值]>[替换错误] M公式: = Table.ReplaceErrorValues( 表, {{ ...
- .NET6中一些常用组件的配置及使用记录,持续更新中。。。
NET6App 介绍 .NET 6的CoreApp框架,用来学习.NET6的一些变动和新特性,使用EFCore,等一系列组件的运用,每个用单独的文档篇章记录,持续更新文档哦. 如果对您有帮助,点击右上 ...
- zabbix保姆级安装教程
安装步骤 1.进入官网选择下载的版本和服务器类型 官网地址:https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=cent ...
- java 数据类型String 【正则表达式】匹配工具 Pattern和Matcher
Pattern和Matcher的介绍: Pattern对象是正则表达式编译后在内存中的表示形式,因此正则表达式宇符串必须先被编译为Pattern对象,然后再用该Pattern对象创建对应的Matche ...