簡單接口回調例子


轉發有關面向抽象編程和面向接口編程一篇文章https://www.cnblogs.com/chiweiming/p/9229457.html

以下是面向接口編程的一個例子

某游戲公司現欲開發一款面向兒童的模擬游戲,該游戲主要模擬現實世界中各種鴨子的發聲特征、飛行特征和外觀特征。游戲需要模擬的鴨子種類及其特征如下表所示。

鴨子種類及其特征

鴨子種類

發聲特征

飛行特征

外觀特征

灰鴨( MallardDuck)

發出“嘎嘎”聲(Quack)

翅膀飛行(FlyWithWings)

灰色羽毛

紅頭鴨(RedHeadDuck)

發出“嘎嘎”聲(Quack)

翅膀飛行(FlyWithWings)

灰色制毛-紅頭

棉花鴨(CottonDuck)

不發聲(QuackNoWay)

不能飛行( FlyNoWay)

白色

橡皮鴨(RubherDuck)

發出橡皮與空氣摩擦聲(Squeak)

不能飛行( FlyNoWay

黑白橡皮色

為了支持將來能夠模擬更多種類鴨子的特征,決定采用策略(Strategy)模式。試畫出對應的設計模式的類圖結構圖。並寫java文件、編譯java文件、執行class文件。

以下是類圖:

 

以下是接口代碼:

public interface DUCK {
    public abstract void voice();
    public abstract void fly();
    public abstract void show();
}

以下是實現接口的類代碼:

public class MallardDuck implements DUCK{
    public void voice() {
        System.out.print("發出“嘎嘎”聲(Quack)");
    }
    public void fly() {
        System.out.print("翅膀飛行(FlyWithWings)");
    }
    public void show() {
        System.out.println("灰色羽毛");
    }
}
public class RedHeadDuck implements DUCK {
    public void voice() {
        System.out.print("發出“嘎嘎”聲(Quack)");
    }
    public void fly() {
        System.out.print("翅膀飛行(FlyWithWings)");
    }
    public void show() {
        System.out.println("灰色制毛-紅頭");
    }
}
public class CottonDuck implements DUCK {
    public void voice() {
        System.out.print("不發聲(QuackNoWay)");
    }
    public void fly() {
        System.out.print("不能飛行( FlyNoWay)");
    }
    public void show() {
        System.out.println("白色");
    }
}
public class RubherDuck implements DUCK {
    public void voice() {
        System.out.print("發出橡皮與空氣摩擦聲(Squeak)");
    }
    public void fly() {
        System.out.print("不能飛行( FlyNoWay)");
    }
    public void show() {
        System.out.println("黑白橡皮色");
    }
}

以下是simulator(模擬器(面向接口的類))代碼:

public class simulator {//真正實現接口回調的模擬器
    DUCK duck;
    public void setDUCK(DUCK duck) {
        this.duck=duck;
    }
    public void play() {
        duck.voice();
        duck.fly();
        duck.show();
    }
}

Application代碼(只用了MallardDuck的例子):

public class Application {
    public static void main(String args[]) {//主函數的調用
    simulator sim=new simulator();
    sim.setDUCK(new MallardDuck());
    sim.play();
    }
}

以下是運行結果截圖:

歡迎大家指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM