使用接口实现数据回调
这个其实也就是我们的代理设计模式,能更加方便功能的扩展
比如我们需要做一个阅读界面和聊天界面,需要对它们进行一些简单的设置,就是设置一些背景颜色以及边框的大小。
问题也来了,这两个对象都要使用这个设Setting类,我们就可以定义一个接口,统一管理传递数据的方式,并且保证每个使用Setting类都必须实现这个方法,代码引用
首先我们可以定义一个Setting类,并在里面有一个内部接口
public class Setting {
FontSettingInterface obj;//记录为谁设置颜色和大小 记录做完事情之后 将数据返回给谁
public Setting(FontSettingInterface obj){
this.obj=obj;
}
public interface FontSettingInterface{
void change(String color,int size);
}
然后我们就可以去定义我们的阅读界面和聊天界面,这是阅读类
public class Read implements Setting.FontSettingInterface{
private String text;
private String color;
private int size;
public Read(String text){
this.text=text;
}
public void goToSettings(){
//1.创建设置页面
Setting setting=new Setting(this);
setting.startSetting();
}
public void change(String color,int size){
System.out.println("改变前的颜色" +this.color+
"大小"+this.size);
this.color=color;
this.size=size;
System.out.println("改变后的颜色" +this.color+
"大小"+this.size);
}
}
下面这是聊天类
public class Chat implements Setting.FontSettingInterface {
String text2;
String color;
int size;
public Chat(String text2){
this.text2=text2;
}
public void gotoSettings(){
Setting setting=new Setting(this);
setting.startSetting();
}
@Override
public void change(String color, int size) {
System.out.println("改变前的颜色" +this.color+
"大小"+this.size);
this.color=color;
this.size=size;
System.out.println("改变后的颜色" +this.color+
"大小"+this.size);
}
}
注意到我们在Setting类当中已经实现了回调,最后我们在main函数里面实现就行了
public class Myclass {
public static void main(String[] args){
Read read=new Read("test");
read.goToSettings();
Chat chat=new Chat("test2");
chat.gotoSettings();
}
}
最终的结果如下图: