定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。
package designpattern.observer; public interface fans { public void react(string result); }
package designpattern.observer; public class homefans implements fans { @override public void react(string result) { system.out.print("主场球迷:"); if (result.equals("win")) { system.out.println("yes! 我们赢啦,主场就是牛批!!!"); } else { system.out.println("输了,哎..."); } } }
package designpattern.observer; public class awayfans implements fans { @override public void react(string result) { system.out.print("客场球迷:"); if (result.equals("win")) { system.out.println("输了,哎..."); } else { system.out.println("yes! 客场都赢啦,牛批!!!"); } } }
package designpattern.observer; import java.util.arraylist; import java.util.list; public interface match { list<fans> fanslist = new arraylist<>();// 这一句 void addfans(fans fans); void removefans(fans fans); void notifyresult(string result); }
package designpattern.observer; import java.util.arraylist; import java.util.list; public class matchonthespot implements match { // list<fans> fanslist = new arraylist<>(); @override public void addfans(fans fans) { fanslist.add(fans); } @override public void removefans(fans fans) { fanslist.remove(fans); } @override public void notifyresult(string result) { for (fans fans : fanslist) { fans.react(result); } } }
package designpattern.observer; import java.util.arraylist; import java.util.list; public class matchonthetv implements match { // list<fans> fanslist = new arraylist<>(); @override public void addfans(fans fans) { fanslist.add(fans); } @override public void removefans(fans fans) { fanslist.remove(fans); } @override public void notifyresult(string result) { for (fans fans : fanslist) { fans.react(result); } } }
package designpattern.observer; public class client { public static void main(string[] args) { homefans homefans = new homefans(); awayfans awayfans = new awayfans(); // 现场看 match match = new matchonthespot(); match.addfans(homefans); match.addfans(awayfans); system.out.println("主场赢啦~"); match.notifyresult("win"); system.out.println("==========================="); // 电视上看 match = new matchonthetv(); system.out.println("主场输啦~"); match.notifyresult("lose"); } }
主场赢啦~ 主场球迷:yes! 我们赢啦,主场就是牛批!!! 客场球迷:输了,哎... =========================== 主场输啦~ 主场球迷:输了,哎... 客场球迷:yes! 客场都赢啦,牛批!!!
如对本文有疑问, 点击进行留言回复!!
网友评论