简单接口回调例子

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

以下是运行结果截图:

技术分享图片

欢迎大家指正!

以上是关于简单接口回调例子的主要内容,如果未能解决你的问题,请参考以下文章

如何使用接口将活动回调返回到片段

给个Java接口回调的例子

片段交互回调:onAttach() vs setter

Java回调函数的理解与实现

爬虫日记(96):Twisted的通过对象进行回调

Java设计模式补充:回调模式事件监听器模式观察者模式(转)