观察者模式--西游记举例

本文介绍了一个基于Android平台的观察者模式应用案例。通过定义接口和具体观察者类(如WuKong、BaJie、ShaSeng),并结合目标类TangSeng实现了状态变化时的通知功能。在MainActivity中,通过按钮点击触发状态更新,并将各观察者的响应结果显示在ListView中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

布局  :一个Button,一个ListView

package com.lyb.observer;
/**
 * 定义每个观察者要实现的功能
 */
public interface Observer {


public String save();

}


观察者:

package com.tarena.observer;
/**
 * 观察者
 */
public class WuKong implements Observer {


@Override
public String save() {
// TODO Auto-generated method stub
return "WuKong来啦";
}


}


package com.lyb.observer;
/**
 * 观察者
 */
public class BaJie implements Observer {


@Override
public String save() {
// TODO Auto-generated method stub
return "BaJie来啦";
}


}


package com.lyb.observer;
/**
 * 观察者
 */
public class ShaSeng implements Observer {


@Override
public String save() {
// TODO Auto-generated method stub
return "ShaSeng来啦";
}

}


目标:

package com.lyb.observer;


import java.util.ArrayList;


/**
 * 目标   ,目标发生变化  ,观察者要知道
 *
 */
public class TangSeng {
//存放观察者
ArrayList<Observer> list=new ArrayList<Observer>();
//接收观察者
public void register(Observer observer){
list.add(observer);
}
//发生变化通知观察者
public ArrayList<String> help(){
ArrayList<String> stringList=new ArrayList<String>();
for (Observer observer:list) {
stringList.add(observer.save());
}
return stringList;
}

}


MainActivity代码:


package com.lyb.observer;


import java.util.ArrayList;


import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;


public class MainActivity extends Activity {


TangSeng tangSeng;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

tangSeng=new TangSeng();
tangSeng.register(new WuKong());
tangSeng.register(new ShaSeng());
tangSeng.register(new BaJie());

Button btn=(Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
ListView lv=(ListView) findViewById(R.id.listView1);
ArrayList<String> list=tangSeng.help();
ArrayAdapter<String> adapter=new ArrayAdapter<String>(getApplication(),android.R.layout.simple_list_item_1,list );
lv.setAdapter(adapter);
}
});

}










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值