下面我将详细讲解Java中的接口回调实例,并提供两个示例说明。
接口回调实例
在Java中,接口回调是一种设计模式,常用于构建事件处理系统或异步任务处理机制。
接口回调指的是通过接口定义方法,并在其他地方实例化这个接口,然后在需要的时候调用这个方法。通过接口回调实现了部分函数的多态。
下面是接口回调的基本实现流程:
- 定义一个接口(Callback),这个接口里面定义一个需要回调的方法。
- 在需要的类中使用一个该接口的对象接收一个实例化的类,实现接口的方法。
- 调用回调函数。
示例1
下面我们来看一个简单的示例,演示如何使用接口回调。
//定义一个回调接口
interface Callback {
void onCall();
}
//实现回调函数的类
class Caller {
private Callback callback;
public void setCallback(Callback callback) {
this.callback = callback;
}
public void call() {
System.out.println("Caller calling...");
callback.onCall();
}
}
//使用接口回调:实例化Callback接口的实现类,并将这个实现类的对象和Caller连接起来
public class CallbackDemo {
public static void main(String[] args) {
Caller caller = new Caller();
caller.setCallback(() -> System.out.println("Callback called."));
caller.call();
}
}
输出结果:
Caller calling...
Callback called.
在上面的示例中,我们定义了一个回调接口Callback,用于在Caller类中调用onCall方法。通过setCallback方法,将Callback接口的实现类的对象传入Caller类中,实现类中的onCall方法就变成了Caller类的回调函数。
在CallbackDemo示例中,我们实例化了一个Caller对象,然后通过Lambda表达式实现了Callback接口的onCall方法,最后通过caller.call()方法,间接调用了实现类的onCall方法。
示例2
下面我们来看一个稍微复杂一些的例子,在图书商店购买书籍并且获取折扣。
//定义一个折扣类
class Discount {
public void onBookPurchased(float discount) {
System.out.println("Book purchased with a discount of " + discount);
}
}
//定义一个购买图书的类
class BookStore {
public void purchase(Book book, Discount discount) {
float price = book.getPrice();
float finalPrice = price - price * 0.1f;
discount.onBookPurchased(finalPrice);
}
}
//使用接口回调实现折扣功能
public class BookStoreDemo {
public static void main(String[] args) {
Book book = new Book("Java Programming", 100f);
Discount discount = new Discount();
new BookStore().purchase(book, discount);
}
}
//定义一个图书类
class Book {
private String title;
private float price;
public Book(String title, float price) {
this.title = title;
this.price = price;
}
public float getPrice() {
return price;
}
}
输出结果:
Book purchased with a discount of 90.0
在这个示例中,我们定义了一个折扣类Discount,拥有onBookPurchased方法,用于在BookStore类中调用。我们在BookStore中使用接口回调,将Discount对象传递给purchase方法。然后我们通过计算得到最终价格,把这个价格传递给折扣类的onBookPurchased方法,在这个方法中输出折扣价格。
在BookStoreDemo中,我们实例化了一个Book对象和一个Discount对象,然后传入BookStore对象中的purchase方法,输出了折扣价格。
这个示例中,我们通过接口回调实现了简单的折扣功能。思路类似于事件处理,通过定义一个断面(Discount类),将控制权交给使用者(BookStore类)来实现具体的操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的接口回调实例 - Python技术站