代码
package com.minghai.code3;
interface Cycle{
void ride();
}
interface CycleFactory{
Cycle getCycle();
}
class Unicycle implements Cycle{
public void ride() {System.out.println("ride Unicycle");}
}
class UnicycleFactory implements CycleFactory{
public Cycle getCycle() {return new Unicycle();}
}
class Bicycle implements Cycle{
public void ride() {System.out.println("ride Bicycle");}
}
class BicycleFactory implements CycleFactory{
public Cycle getCycle() {return new Bicycle();}
}
class Tricycle implements Cycle{
public void ride() {System.out.println("ride Tricycle");}
}a
class TricycleFactory implements CycleFactory{
public Cycle getCycle() {return new Tricycle();}
}
public class Cycles{
public static void rideCycle(CycleFactory factory) {
Cycle cycle = factory.getCycle();
cycle.ride();
}
public static void main(String[] args) {
rideCycle(new UnicycleFactory());
rideCycle(new BicycleFactory());
rideCycle(new TricycleFactory());
}
}
使用匿名内部类改进
interface Cycle{
void ride();
}
interface CycleFactory{
Cycle getCycle();
}
class Unicycle implements Cycle{
public void ride() {System.out.println("ride Unicycle");}
public static CycleFactory factory = new CycleFactory() {
@Override
public Cycle getCycle() {
return new Unicycle();
}
};
}
class Bicycle implements Cycle{
public void ride() {System.out.println("ride Bicycle");}
public static CycleFactory factory = new CycleFactory() {
@Override
public Cycle getCycle() {
return new Bicycle();
}
};
}
class Tricycle implements Cycle{
public void ride() {System.out.println("ride Tricycle");}
public static CycleFactory factory = new CycleFactory() {
@Override
public Cycle getCycle() {
return new Tricycle();
}
};
}
public class Cycles2{
public static void rideCycle(CycleFactory factory) {
Cycle cycle = factory.getCycle();
cycle.ride();
}
public static void main(String[] args) {
rideCycle(Unicycle.factory);
rideCycle(Tricycle.factory);
rideCycle(Bicycle.factory);
}
}