1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| import java.util.ArrayList; import java.util.List;
@FunctionalInterface interface Observer{ void notify(String tweet); }
class NYTimes implements Observer{
@Override public void notify(String tweet) { if (tweet != null && tweet.contains("money")){ System.out.println("Breaking news in NY !" + tweet); } } } class LeMonde implements Observer{
@Override public void notify(String tweet) { if (tweet != null && tweet.contains("queen")){ System.out.println(""+tweet); } } } class Guardian implements Observer{
@Override public void notify(String tweet) { if (tweet != null && tweet.contains("wine")){ System.out.println("Today cheese ,wine and news!"+tweet); } } } interface Subject{ void registerObserver(Observer o); void notifyObservers(String twee); }
class Feed implements Subject{
private final List<Observer> observers = new ArrayList<>();
@Override public void registerObserver(Observer o) { this.observers.add(o); }
@Override public void notifyObservers(String twee) { observers.forEach(o ->o.notify(twee)); }
public static void main(String[] args) { Feed f = new Feed(); f.registerObserver(new NYTimes()); f.registerObserver(new Guardian()); f.notifyObservers("嗯. 来了一条特大新闻!!!!"); f.notifyObservers("嗯. 来了一条特大新闻!!!!money");
f.registerObserver((String string) ->{ if (string != null){ System.out.println("这个新闻太水啦!" + string); } }); f.registerObserver((String string) ->{ if (string != null){ System.out.println("这个新闻挺好的!!" + string); } });
} }
|