接口对调场景
以下面代码的例子来说一下Frame1是售货员,Frame2是顾客。顾客的任务就是什么也不干,而售货员的任务是处理一且事务的,那么给钱的事情是谁来处理的呢?是顾客的手机(也就是接口).可能大家觉得手机不也是顾客操作的吗?但是在这里顾客仅仅是顾客,而手机也仅仅是手机,他们都分别是个体,而且各司其职.
话不多说 上干货
public class Frame1 extends Frame implements Frame2.MoneyListener {
private Label label = new Label("金额");
private Button button = new Button("购买");
public Frame1(){
this.setSize(400,200);
this.setLayout(new FlowLayout());
this.add(button);
this.add(label);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new Frame2().MoneyListener(Frame1.this);!!!!!!!!!!!!!!!!!!!!!!!这里
}
});
this.setVisible(true);
}
@Override
public void setMoney(String money) {
label.setText(money);
}
public static void main(String[] args) {
new Frame1();
}
}
以上我觉得各位如果有一定基础都没什么问题,有小小问题的也就可能是我标记感叹号的这一行.
咱们接着向下走 文章很短慢慢读哦
public class Frame2 extends Frame{
private TextField textField = new TextField(20);
private Button button = new Button("付款");
public Frame2(){
this.setSize(400,200);
this.setLayout(new FlowLayout());
this.add(button);
this.add(textField);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String money = textField.getText();
moneyListener.setMoney(money);
}
});
this.setVisible(true);
}
private MoneyListener moneyListener;
public void MoneyListener(MoneyListener moneyListener){
this.moneyListener = moneyListener;//fk
}
public static interface MoneyListener{
public void setMoney(String money);
}
}
这里就是Frame2了,咱们在这里定义一个接口MoneyListener他也仅仅只有一个方法 setMoney。
兄弟们咱们就从main方法开始吧!main方法在Frame1仔细看
我们创建了一个对象Frame1咱们就在构造方法走啊走啊,当你点击按钮的时候我们的故事就开始了!
这里是一个匿名类方法也没什么说的主要的就是!!它 new Frame2().MoneyListener(Frame1.this)
这是我的理解 如果有问题请大佬指出!!!!!
新建了一个Frame2对象 MoneyListener()是他的监听事件 由于我们需要他俩连接起来啊所以我们传入的参数是Frame1.this
如果你传的是this,这是this可不是Frame1 而是ActionEvent。刚开始我还纳闷呢,这个方法是不Frame2的方法吗而且参数还是接口的对象
(好想接口不能实例化对象 这里有哪位大佬说一下)最后发现是我眼瞎了明明Frame1就继承着接口呢。法克!
然后我想就没什么问题了.
结果如图
鼠标一点击100就过去 神不神奇!
接口回调是Spring的基础 如果想往深处学学的话 我觉得还是很重要的!
而且接口回调的好处 Frame2 和 Frame1没有直接的联系 是通过接口来实现的数据传输!这也就大大降低了耦合性.
加油!!!!