package com.gary.test;
/**
* A执行循环,循环到5的时候通知B
* 需求:A是很久之前写的,B是后来写的
* 解决方法:事先把一个对象传递给A,A执行到5时候通知这个对象,并调用这个对象中的方法。
* 但是这个对象是一个接口的实例而不是直接传递的B的实例。
* @author gary
*
*/
public class A {
public void print(PrintListener listener) {
for (int i = 0; i < 10; i++) {
System.out.println("2000循环到了--" + i);
if(i == 5) {
System.out.println("2000循环到5了,该通知B了。");
listener.print();
}
}
}
}
package com.gary.test;
public class B implements PrintListener{
@Override
public void print() {
System.out.println("2018年A已经循环到了5,所有我的这个方法将被调用");
}
}
package com.gary.test;
public class Test {
public static void main(String[] args) {
A a = new A();
a.print(new B());
}
}
package com.gary.test;
public interface PrintListener {
void print();
}