package practice;
/**
* 自行车类
*/
public class Cycles {
//骑自行车,根据不同的工厂,骑不同类型的自行车
public static void driveCycle(CycleFactory factory){
Cycle cycle = factory.getCycle();
cycle.drive();
}
public static void main(String[] args) {
//骑单轮车
driveCycle(new UnicycleFactory());
//骑脚踏车
driveCycle(new BicycleFactory());
}
}
//一个自行车接口
interface Cycle {
void drive();
}
//生成自行车工厂
interface CycleFactory{
Cycle getCycle();
}
//一辆具体的自行车,单轮车
class Unicycle implements Cycle{
@Override
public void drive() {
System.out.println("Unicycle");
}
}
//生产单轮车的工厂
class UnicycleFactory implements CycleFactory{
@Override
public Cycle getCycle() {
return new Unicycle();
}
}
//一辆具体自行车,脚踏车
class Bicycle implements Cycle{
@Override
public void drive() {
System.out.println("Bicycle");
}
}
//脚踏车工厂
class BicycleFactory implements CycleFactory{
@Override
public Cycle getCycle() {
return new Bicycle();
}
}
这是一个骑自行车的通用类,根据不同工厂生产的自行车,来决定骑什么自行车。其实我们编程就喜欢这种通用类,一个类可以根据不同的需求来调用。类似一个框架,比喻spring里面的SqlSeesionFactory.等等