java Callback

package net;

import java.util.ArrayList;
import java.util.List;

public class FZ {
	public static void main(String[] args) {
		B button = new B();
		button.clickButton(new A());

		System.out.println("----------------");
		C c = new C();
		c.startBatch();

	}
}

interface IListener {

	public void callBack(String data);
}

class A implements IListener {
	@Override
	public void callBack(String data) {
		System.out.println("do this thing...");
	}
}

class C implements IListener {
	private List<BBB> bbbs = new ArrayList<BBB>();

	public void startBatch() {
		for (int i = 0; i < 10; i++) {
			BBB bbb = new BBB(this);
			bbbs.add(bbb);
			bbb.start();
		}
	}

	@Override
	public void callBack(String data) {
		// TODO Auto-generated method stub
		System.out.println(data + " done!");
	}

}

class B {
	private IListener listener;

	public void clickButton(IListener listener) {
		this.listener = listener;
		// TODO do much time
		String data = "done!";
		listener.callBack(data);
	}

}

abstract class BB {
	private BB bb;

	abstract void clickButton(BB bb);

	public void ClickButton(BB bb) {
		// TODO spent log time thing
		bb.clickButton(bb);
	}

}

class BBB extends Thread {
	private IListener listener;

	public BBB(IListener listener) {
		this.listener = listener;
	}

	@Deprecated
	public void clickButton(IListener listener) {
		this.listener = listener;
		String data = "done!";
		listener.callBack(data);
	}

	public void doThings() {
		// TODO cost much time
		for (int i = 0; i < 100; i++) {
			System.err.println(Thread.currentThread().getName() + " => " + i);
		}
		listener.callBack(Thread.currentThread().getName());
	}

	@Override
	public void run() {
		doThings();
	}

}

你可能感兴趣的:(callback)