java设计模式(1)观察者模式

说到java观察者模式 简单点一个例子就是

被观测方通过提供注册接口,使得观测方能够通过注册使得自己实时掌握被观测方数据变化。

好了 接下来是代码

被观测目标的接口,继承这个类的目标天生自带 拉人 踢人技能。只有被邀请的人才能看

1.subject.ava

package observer;
import java.util.ArrayList;
import java.util.List;
public  class subject {
protected List<Person> persons = new ArrayList<Person>(); 
public void uptargect(int mytargect){
for(Person per:persons){
per.update(mytargect);
}

}
public void registPerson(Person per){
persons.add(per);

}
public void removePerson(Person per){
persons.remove(per);
} 
}

 

子类.一个自己属性变化的方法  用线程是嫌她运行太快0.0  让他一秒来一次

2.subjectA .java

package observer;
public class subjectA extends subject implements Runnable{

private int Mytargect;
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
try {
Thread.currentThread().sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Mytargect+=1;
this.uptargect(Mytargect);
}
}


}

观察者(偷窥者0.0)的接口类 继承者自带 实时更新偷窥内容。。

3.

package observer;


public interface Personobj {

public void update(int targect);


}

观察者实现类

targect为观察到的结果,那么

 

package observer;
public class Person implements Personobj{
private int targect;
private String name;

Person(String name){
this.name=name;
}
Person(){}

public int getTargect() {
return targect;
}
public void setTargect(int targect) {
this.targect = targect;
}

@Override
public void update(int mytargect) {
// TODO Auto-generated method stub
this.targect=mytargect;
getinfo();
}
public void getinfo(){
System.out.println(name+":捕捉到目标数值:"+ targect);
}


}

测试

 

package observer;
/**
 * 
 * 观察者模式 
 * 适用范围  游戏对战,广播程序 等等
 * 
 * @author 944658413
 *
 */
public class Test {
public static void main(String[] args) {
//被测目标
subjectA a = new subjectA();

//观察者
Person pA = new Person("小明");
Person pB = new Person("小花");
Person pC = new Person("小刚");

//被测目标加入观察者
a.registPerson(pA);
a.registPerson(pB);
a.registPerson(pC);

//被测目标启动运行

Thread t = new Thread(a);
t.start();

}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值