根据你的业务分析:
这应该是一个观察者模式:
观察者模式的概念:定义对象间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都得到通知并被自动更新。
你自己作为具体的主题,其他求租人员是具体的观察者,你发布信息给所有的具体观察者。
Uml图
代码如下:
主题:- //主题
- public interface Subject {
- public void addObserver(Observer o);
- public void deleteObserver(Observer o);
- public void notifuObserver();
- }
复制代码 观察者:- //观察者
- public interface Observer {
- public void hearTelephone(String headMess);
- }
复制代码 具体主题:- import java.util.ArrayList;
- //具体主题:房屋中心
- public class SeekHouseCenter implements Subject {
- String mess;
- boolean changed;
- ArrayList<Object> personList;// 存放观察者引用的数组线性表
- SeekHouseCenter() {
- personList = new ArrayList<Object>();
- mess = "";
- changed = false;
- }
- @Override
- public void addObserver(Observer o) {
- if (!personList.contains(o)) {
- personList.add(o);// 把观察者的引用添加到数组线性表
- }
- }
- @Override
- public void deleteObserver(Observer o) {
- if (personList.contains(o)) {
- personList.remove(o);
- }
- }
- @Override
- public void notifuObserver() {
- if (changed) {// 通知所有的观察者
- for (int i = 0; i < personList.size(); i++) {
- Observer observer = (Observer) personList.get(i);// 让观察者听电话
- observer.hearTelephone(mess);
- }
- changed = false;
- }
- }
- public void giveNewMess(String str) {
- if (str.equals(mess)) {
- changed = false;
- } else {
- mess = str;
- changed = true;
- }
- }
- }
复制代码 具体观察者:- //具体的观察者:屌丝
- public class DiaoSi implements Observer {
- Subject subject;
- String name;
- DiaoSi(Subject subject, String name) {
- this.subject = subject;
- this.name = name;
- subject.addObserver(this);
- }
- @Override
- public void hearTelephone(String headMess) {
- if (headMess.contains("小房间")) {
- System.out.println("我是一个屌丝:" + "我名叫" + name);
- System.out.println("太好了,有个小房间可以租." + "我租了:" + headMess);
- } else {
- System.out.println("我是屌丝,这里没有我要租的房子");
- }
- }
- }
- //具体的观察者:高富帅
- public class GaoFuShuai implements Observer {
- Subject subject;
- String name;
- GaoFuShuai(Subject subject,String name){
- this.subject=subject;
- this.name=name;
- subject.addObserver(this);
- }
- @Override
- public void hearTelephone(String headMess) {
- System.out.println("我是高富帅:"+"我名叫"+name);
- System.out.println("钱不是问题."+"我租了:"+headMess);
- }
- }
复制代码 模式使用:- public class Application {
- public static void main(String[] args) {
- SeekHouseCenter center = new SeekHouseCenter();// 具体主题,也就是你自己
- DiaoSi diaoSiA = new DiaoSi(center, "王小二");
- DiaoSi diaoSiB = new DiaoSi(center, "张三");
- GaoFuShuai gaoFuShuaiA = new GaoFuShuai(center, "阿帅");
- System.out.println("我发布了房屋信息1:");
- System.out.println("-----------------------");
- center.giveNewMess("超级豪华别墅");// 具体主题给出信息,也就是你发布房屋信息
- center.notifuObserver();// 具体主题通知信息
- System.out.println("我发布了房屋信息2:");
- System.out.println("-----------------------");
- center.giveNewMess("小房间");// 具体主题给出信息,也就是你发布房屋信息
- center.notifuObserver();// 具体主题通知信息
- }
- }
复制代码 输出结果如图
希望这些代码能给你启示。
|