通过接口降低关联性

[size=medium]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中实现的方法。[/size]
//接口
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();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值