zoukankan      html  css  js  c++  java
  • 理解Java接口回调

    初步认识:

     

    实现步骤:

    1、创建一个回调接口。

    2、创建一个回调对象实现回调接口。

    3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法。

    代码示例:

    实例:Boss通知员工做事情,员工完成任务之后告诉Boss完成情况。

    说明:Callback:回调接口。Boss:回调对象。Employee:控制器对象。

    1、创建一个回调接口

    public interface Callback {
        public void yes();
        public void no();
    }

    2、创建一个回调对象实现回调接口 

    //  Boss需要实现回调的接口
    public class Boss implements Callback{
    //    传入一个员工对象
        private Employee employee;
        public Boss(Employee employee) {
            this.employee = employee;
        }
        
    //    告诉员工要做什么事情
        public void doEvent(String event) {
            System.out.println("Boss:"+event);
    //      将当前对象传给员工,员工才可以回调
            employee.doSomething(this, event);
        }
        
    //    员工完成事情后回调的方法
        @Override
        public void yes() {
            System.out.println("Boss:任务完成得很不错,下个月给你涨工资");
        }
        @Override
        public void no() {
            System.out.println("Boss:任务没完成,好好反思一下");
        }
        
    }

    3、创建一个控制器对象,将回调对象作为参数传给控制器对象,控制器对象负责检查某个场景是否出现或某个条件是否满足,当满足时,则调用回调对象的某方法

    public class Employee {
        public Employee(){}
     
    //    完成boss交代的事情,回调接口作为参数穿过来
        public void doSomething(Callback callback, String event) {
            String flag=null;
            System.out.println("Employee:正在做:"+event);
            
    //        根据完成情况通知Boss,即接口回调
            System.out.println("Employee:完成了任务!");
            flag="完成";
            if(flag.equals("完成")){
                callback.yes();
            }
            
            System.out.println("Employee:未完成任务!");
            flag="未完成";
            if(flag.equals("未完成")){
                callback.no();
            }
            
        }
    }

    4、测试:

    public class Test {
        public static void main(String[] args) {
            Employee employee=new Employee();
            Boss boss = new Boss(employee);
            boss.doEvent("写hello world!");
        }
    }

    结果:

    原文链接:https://blog.csdn.net/qq_41630866/article/details/88015833?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-2.control

  • 相关阅读:
    session生命周期
    解决安装sql server 需要重启问题
    myeclipse + tomcat 项目自动部署
    JSP页面转向方式
    关于Response.redirect()方法
    MyEclipse修改项目名称后,部署到tomcat问题
    为Eclipse安装主题插件
    MyEclipse自定义快捷键
    如何查看JSP和Servlet版本
    Wannafly挑战赛2 C.Butterfly(线段树优化枚举)
  • 原文地址:https://www.cnblogs.com/chong-zuo3322/p/14068040.html
Copyright © 2011-2022 走看看