HeadFirst 多种模式组合使用

    我们要通过一个例子把前边学习过的设计模式串一遍,以一种需求不断叠加的实际工作场景为背景。首先我们还是把我们第一个模式所举的鸭子的例子搬出来,我们要创建一个模拟器对这些鸭子的叫声进行模拟:

首先我们设计一个呱呱叫的接口:

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(); 
    } 
}

你可能感兴趣的:(java,设计模式,编程,工作)