JAVA设计方法思考之如何实现一个方法执行完毕后自动执行下一个方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA设计方法思考之如何实现一个方法执行完毕后自动执行下一个方法相关的知识,希望对你有一定的参考价值。

今天编程时,突然想起来在一些异步操作或android原生库的时候,需要我们实现一些方法,

这些方法只需要我们具体实现,然后他们会在适当的时候,自动被调用!

例如AsyncTask,执行玩doInBackground()后会执行处理结果的postResult()方法,但我们并没有设置过他们的执行顺序。

以前只知道他们的运行原理,但不知道具体的实现方法,细想起来,这是一个相当不错的代码设计,所以决定研究一下。

 

因为一开始是通过实现方法来具体实现那些需要被执行的方法的,所以以为实现的方式是接口,

思索很久,依然没想到接口里面如何设置方法的运行顺序,搜索发现没有相关的结果,只好去看下AsyncTask的源码,希望从源码中得到答案!

 

而源码相当简洁有力,直接给出了我想要的答案:实现方法被调用的顺序控制,不是通过接口来实现的,而是通过抽象类!

而具体控制程序方法的调用顺序的实现,就是在固定的方法里控制:例如AsyncTask的execute(具体的实现过程可以自己在IDE里面轻松查看,就不去具体剖析了)

 

以下是本人模仿的示例代码,用于打印一个字符串数组的所有内容:

public class interface
{
     public static void main(String[] args){
	String[] b = {"a","b","c","d","e","f","g","h","i","j"};
        new Order(b) {
            @Override
            protected String onFirst(String s) {
                System.out.println(s);
                return null;
            }

            @Override
            protected String onNext(String s) {
                System.out.println(s);
                return null;
            }

            @Override
            protected void onCompleted(String s) {
                System.out.println(s);
            }
        }.start();
	
    }

}

//具体实现方法顺序调用的抽象类 abstract class Order{ private String[] a; private int i = 0; public Order(String[] s){ this.a = s; }
  //这个抽象对象通过本方法启动,而控制程序方法调用的具体过程就是从这里开始 public String[] start(){

onFirst(a[i++]); executor(); return a; } public void executor(){
    //最后一个需要在完成时执行,也可以让next方法执行完后再去执行Completed方法 while(i < a.length-2 && a[i] != null){   a[i++] = onNext(a[i]); }     //返回字符串数组的最后一个元素内容 onCompleted(a[a.length-1]); }   //下面这三个方法就是用来在新建对象时实现的方法,而我只想实现方法按照顺序调用,就简单地给出对应顺序的字符串
  //如果想要实现更复杂的功能,原理相同,具体问题具体分析
protected abstract String onFirst(String s); protected abstract String onNext(String s); protected abstract void onCompleted(String s); }

  

 








以上是关于JAVA设计方法思考之如何实现一个方法执行完毕后自动执行下一个方法的主要内容,如果未能解决你的问题,请参考以下文章

读书笔记之sql server2012数据库重启后自增ID值跳跃1000的解决方法

如何实现java主线程等待子线程执行完毕之后再执行

java设计模式之代理模式

java之递归

在java一个方法中,如何让一行代码执行完毕以后等待几秒钟后再执行另一行代码 主要 是一个方法中

java基础学习之内存分析(栈堆方法区)