设计模式之观察者
来源:互联网 发布:vip视频解析源码 编辑:程序博客网 时间:2024/04/26 18:30
最近在做一个监听,初步打算是用线程不断接收消息(感觉比较弱智的做法),但考虑效率和内存的问题,打算参考下android的onclick事件的实现,系统是使用观察者模式,所以参考了一些观察者模式的例子,有一个很不错,分享下
三个徒弟就唐僧
唐僧是目标
三个徒弟是观察者
public class Tangseng {
ArrayList<Person> lists;
public Tangseng() {
lists = new ArrayList<Person>();
}
public void register(Person p) {
lists.add(p);
}
public void unRegister(Person p) {
lists.remove(p);
}
public ArrayList<String> help() {
ArrayList<String> arraylist = new ArrayList<String>();
for (Person p : lists) {
arraylist.add(p.save());
}
return arraylist;
}
}
接下来就是三个徒弟类了,每个徒弟都有一个救师傅的方法,这是悟空类:
[java] public class Wukong implements Person {
@Override
public String getName() {
return "孙悟空";
}
@Override
public String save() {
return this.getName() + "去救师傅了";
}
}
八戒类:
[java] public class Bajie implements Person {
@Override
public String getName() {
return "八戒";
}
@Override
public String save() {
return this.getName() + "去救师傅了";
}
}
沙僧类:
[java] public class Shaseng implements Person {
@Override
public String getName() {
return "沙僧";
}
@Override
public String save() {
return this.getName() + "去救师傅了";
}
}
师傅一喊救命,三个徒弟就会去救他,这里最后的实现类:
[java] public class XiyoujiActivity extends Activity {
private ListView listView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.listView1);
Tangseng tangseng = new Tangseng();
tangseng.register(new Wukong());
tangseng.register(new Bajie());
tangseng.register(new Shaseng());
ArrayList<String> lists = tangseng.help();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lists);
listView.setAdapter(adapter);
}
}
public class XiyoujiActivity extends Activity {
private ListView listView;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
listView = (ListView) findViewById(R.id.listView1);
Tangseng tangseng = new Tangseng();
tangseng.register(new Wukong());
tangseng.register(new Bajie());
tangseng.register(new Shaseng());
ArrayList<String> lists = tangseng.help();
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, lists);
listView.setAdapter(adapter);
}
}
- 设计模式之-观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- 设计模式之观察者模式
- MemfisStartupServlet.java
- 多线程中定时器的使用
- WebView 中的相关方法大解析
- [探讨java深入的不变模式] java中String类的用法
- MemfisMasterLookup.java
- 设计模式之观察者
- *查看进程所消耗的内存*
- 解决Active Directory密码不满足密码策略的要求
- Android创建和使用数据库详细指南
- 黑马程序员—传智播客sql从入门到提高视频知识整理(1)
- Go agent: https://appengine.google.com/
- C++多线程入门(一)
- Android 启动过程详解(补充)
- 点滴