简单接口回调例子
Posted majiasheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单接口回调例子相关的知识,希望对你有一定的参考价值。
转发有关面向抽象编程和面向接口编程一篇文章https://www.cnblogs.com/chiweiming/p/9229457.html
以下是面向接口编程的一个例子
某游戏公司现欲开发一款面向儿童的模拟游戏,该游戏主要模拟现实世界中各种鸭子的发声特征、飞行特征和外观特征。游戏需要模拟的鸭子种类及其特征如下表所示。
鸭子种类及其特征
鸭子种类 |
发声特征 |
飞行特征 |
外观特征 |
灰鸭( MallardDuck) |
发出“嘎嘎”声(Quack) |
翅膀飞行(FlyWithWings) |
灰色羽毛 |
红头鸭(RedHeadDuck) |
发出“嘎嘎”声(Quack) |
翅膀飞行(FlyWithWings) |
灰色制毛-红头 |
棉花鸭(CottonDuck) |
不发声(QuackNoWay) |
不能飞行( FlyNoWay) |
白色 |
橡皮鸭(RubherDuck) |
发出橡皮与空气摩擦声(Squeak) |
不能飞行( FlyNoWay |
黑白橡皮色 |
为了支持将来能够模拟更多种类鸭子的特征,决定采用策略(Strategy)模式。试画出对应的设计模式的类图结构图。
以下是类图:
以下是接口代码:
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(); } }
以下是运行结果截图:
欢迎大家指正!
以上是关于简单接口回调例子的主要内容,如果未能解决你的问题,请参考以下文章