通过接口降低关联性_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 通过接口降低关联性

通过接口降低关联性

 2014/5/18 13:20:28  zlele  程序员俱乐部  我要评论(0)
  • 摘要:A调用B但更改A的内容,若希望B不发生改变,可以创建一个接口,连接A,B1.创建一个接口M2.用A实现这个接口3.通过构造函数把接口传到B中,在B中使用接口方法(或者使用队列,在B中设置一个ADD方法)4.在A中实例化B,并把A作为M接口传入B(队列:把A加入B),这样在修改A时,无需修改B的内容,在B中使用的M方法即为A中实现的方法。//接口publicinterfaceMsgListener{publicvoidrecvMsg(Stringmsg);
  • 标签:接口
A调用B但更改A的内容,若希望B不发生改变,可以创建一个接口,连接A,B
1.创建一个接口M
2.用A实现这个接口
3.通过构造函数把接口传到B中,在B中使用接口方法
(或者使用队列,在B中设置一个ADD方法)
4.在A中实例化B,并把A作为M接口传入B(队列:把A加入B),这样在修改A时,无需修改B的内容,在B中使用的M方法即为A中实现的方法。

class="java" name="code">//接口
public interface MsgListener {
 public void recvMsg(String msg);
}

/**
 * 计时
 * @author Administrator
 *
 */
public class Time extends Thread{
	//接口
	private MsgListener listener;
	//接口队列
    private ArrayList<MsgListener> listeners=new ArrayList<MsgListener>();
   //向接口队列中添加接口
    
    public void addListener(MsgListener listener){
    	listeners.add(listener);
    }
    public void run(){
    	//计时
    	while(true){
    		try {
				sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
    		
    	for(int i=0;i<listeners.size();i++){
    		MsgListener l=listeners.get(i);
    		l.recvMsg(""+System.currentTimeMillis());
    	}
    }
    }
}

/**
 * 主函数
 * @author zll
 *   在ui中进行修改时,无需变动time中的内容
 */
public class TimeUI implements MsgListener{
JLabel label;
//基本界面
public void initUI(){
	JFrame jf=new JFrame();
	jf.setDefaultCloseOperation(3);
	jf.setLayout(new FlowLayout());
	jf.setSize(500, 500);
	label=new JLabel();
	jf.add(label);
	jf.setVisible(true);
}

public void recvMsg(String msg) {
	//显示msg
 label.setText(msg);
}
public static void main(String[] args){
	TimeUI ui1=new TimeUI();
	ui1.initUI();
	Time time=new Time();
	//在time 中添加接口(ui),在time的有关接口的方法中,用ui中的实例方法
	time.addListener(ui1);
	time.start();
}
}
发表评论
用户名: 匿名