题目:
有一个交通工具接口类Vehicles,有work接口, 有Horse类和Boat类分别实现Vehicles,创建交通工具工厂类,有两个方法分别获得交通工具Horse和Boat;有Person类,有name和Vehicles属性,在构造器中为两个属性赋值,实例化Person对象“唐僧”, 要求一般情况下用Horse作为交通工具,遇到大河时用Boat作为交通工具
代码演示:
package com.atguigu.homework;
public class Homework04 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person person = new Person("唐僧", null);
person.passRiver();
person.commonCond();
}
}
// 根据要求做相应的分析
interface Vehicles { // 接口
public void work();// 方法
}
class Horse implements Vehicles { // 具体交通工具
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("一般情况下 使用马马~~");
}
}
class Boat implements Vehicles { // 具体的交通工具
@Override
public void work() {
// TODO Auto-generated method stub
System.out.println("过河 使用船");
}
}
// VehiclesFactory=> 根据不同的情况,返回对应的交通工具
class VehiclesFactory {
// 需要你自定一个条件来玩
// 分成两个方法
public static Vehicles getVehicles(String cond) {
if ("一般".equals(cond)) {
return new Horse();
} else if ("过河".equals(cond)) {
return new Boat();
} else {
return null;
}
}
public static Vehicles getBoat() {
return new Boat();
}
}
// 每个
class Person {
private String name;
private Vehicles vehicles;
public Person(String name, Vehicles vehicles) {
super();
this.name = name;
this.vehicles = vehicles;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Vehicles getVehicles() {
return vehicles;
}
public void setVehicles(Vehicles vehicles) {
this.vehicles = vehicles;
}
// 写两个方法来适应不同的情况
public void passRiver() {
// 使用到自己定义工厂类
Vehicles vehicles2 = VehiclesFactory.getVehicles("过河");
System.out.println(name);
vehicles2.work();
}
public void commonCond() {
// 使用到自己定义工厂类
Vehicles vehicles2 = VehiclesFactory.getVehicles("一般");
System.out.println(name);
vehicles2.work();
}
}