我们要通过一个例子把前边学习过的设计模式串一遍,以一种需求不断叠加的实际工作场景为背景。首先我们还是把我们第一个模式所举的鸭子的例子搬出来,我们要创建一个模拟器对这些鸭子的叫声进行模拟:
首先我们设计一个呱呱叫的接口:
接着我们让一些类实现这个接口——一些鸭子有这样的功能。
另外一些鸭子也叫唤,但是可能声音不同:
我们此时就可以创建模拟器了:
首先我们设计一个呱呱叫的接口:
public interface Quackable {
public void quack();
}
接着我们让一些类实现这个接口——一些鸭子有这样的功能。
public class MallardDuck implements Quackable {
public void quack() {
System.out.println("Quack");
}
}
public class RedheadDuck implements Quackable {
public void quack() {
System.out.println("Quack");
}
}
另外一些鸭子也叫唤,但是可能声音不同:
public class DuckCall implements Quackable {
public void quack() {
System.out.println("Kwak");
}
}
public class RubberDuck implements Quackable {
public void quack() {
System.out.println("Squeak");
}
}
我们此时就可以创建模拟器了:
public class DuckSimulator {
public static void main(String[] args) {
DuckSimulator simulator = new DuckSimulator();
simulator.simulate();
}
void simulate() {
Quackable mallardDuck = new MallardDuck();//面向接口编程
Quackable redheadDuck = new RedheadDuck();
Quackable duckCall = new DuckCall();
Quackable rubberDuck = new RubberDuck();
System.out.println("\nDuck Simulator");
simulate(mallardDuck);
simulate(redheadDuck);
simulate(duckCall);
simulate(rubberDuck);
}
void simulate(Quackable duck) {//注意,我们在这使用了面向接口编程
duck.quack();
}
}