开炮之java-接口回调!!!

接口对调场景

以下面代码的例子来说一下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就过去了
鼠标一点击100就过去 神不神奇!

接口回调是Spring的基础 如果想往深处学学的话 我觉得还是很重要的!
而且接口回调的好处 Frame2 和 Frame1没有直接的联系 是通过接口来实现的数据传输!这也就大大降低了耦合性.
加油!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值