📄 cycles(1).java
字号:
// innerclasses/Cycles.java
// TIJ4 Chapter Innerclasses, Exercise 16, page 364
/* Modify the solution to Exercise 18 from the Interfaces chapter to use
* anonymous inner classes.
* (Exercise 18, Interface: Create a Cycle interface, with implementations
* Unicycle, Bicycle and Tricycle. Create factories for each type of Cycle,
* and code that uses these factories.
*/
import static org.greggordon.tools.Print.*;
interface Cycle {
void ride();
}
interface CycleFactory {
Cycle getCycle();
}
class Unicycle implements Cycle {
private Unicycle() { println("Unicycle()"); }
public void ride() { println("Ride Unicycle"); }
public static CycleFactory factory =
new CycleFactory() {
public Cycle getCycle() { return new Unicycle(); }
};
}
class Bicycle implements Cycle {
private Bicycle() { println("Bicycle()"); }
public void ride() { println("Ride Bicycle"); }
public static CycleFactory factory =
new CycleFactory() {
public Cycle getCycle() { return new Bicycle(); }
};
}
class Tricycle implements Cycle {
private Tricycle() { println("Tricycle()"); }
public void ride() { println("Ride Tricycle"); }
public static CycleFactory factory =
new CycleFactory() {
public Cycle getCycle() { return new Tricycle(); }
};
}
public class Cycles {
public static void rideCycle(CycleFactory factory) {
Cycle c = factory.getCycle();
c.ride();
}
public static void main(String [] args) {
rideCycle(Unicycle.factory);
rideCycle(Bicycle.factory);
rideCycle(Tricycle.factory);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -