package Devise;
public class Test {
public static void main(String[] args) {
//实例化唐僧,默认骑马
Person person = new Person("唐僧",Factory.getH());
person.common();
person.River();
person.mountain();
}
}
interface Vehicle{
void work();
}
//创建船,马,芭蕉扇实现Vehicle接口
class Horse implements Vehicle{
@Override
public void work() {
System.out.println("马走路");
}
}
class Boat implements Vehicle{
@Override
public void work() {
System.out.println("船走河");
}
}
class Fan implements Vehicle{
@Override
public void work() {
System.out.println("芭蕉扇灭火");
}
}
//创建工厂类,返回船,马,芭蕉扇
class Factory{
//饿汉式,创建好马,不必每次调用都创建新的
static Horse horse=new Horse();
//私有化构造器,不让外部创建对象
private Factory() {}
public static Horse getH(){
return horse;
}
public static Boat getB(){
return new Boat();
}
public static Fan getF(){
return new Fan();
}
}
class Person{
private String name;
private Vehicle v;
public Person(String name, Vehicle v) {//将接口作为形参传入
this.name = name;
this.v = v;
}
public void River(){
//把具体的要求封装成方法
if(!(v instanceof Boat)){
v=Factory.getB();
}
v.work();
}
public void common(){
if(!(v instanceof Horse)){
v=Factory.getH();
}
v.work();
}
public void mountain(){
if(!(v instanceof Fan)){
v=Factory.getF();
}
v.work();
}
}
交通工具切换
最新推荐文章于 2024-08-20 14:34:44 发布
该博客探讨了Java编程中使用接口和工厂模式的实践。通过`Test`类展示了如何实例化不同交通工具(马、船、芭蕉扇),根据场景动态切换对象类型,体现了接口的多态性和工厂模式的灵活性。主要涉及`Vehicle`接口,`Horse`、`Boat`、`Fan`类以及`Factory`静态工厂类的使用。
摘要由CSDN通过智能技术生成