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
|
public class Main { public static void main(String[] args) { Child child = new Child(); child.addObserver(new Dad()); child.addObserver(new Mum()); child.cry(); }
}
@AllArgsConstructor class Event<T>{ T source; String name; String time; }
interface Observer <R>{ public R actionOnEvent(Event<R>e); }
class Child{ List<Observer> observers = new ArrayList<>();
public void addObserver(Observer each){ this.observers.add(each); }
public void cry(){ System.out.println("Baby cry.........."); Event<Child> e = new Event<>(this,"孩子哭了", new Date().toLocaleString());; for (Observer each : observers) { each.actionOnEvent(e); } } }
class Dad implements Observer<Child>{
@Override public Child actionOnEvent(Event<Child> e) { System.out.println("Dad feed baby........"); return e.source; } }
class Mum implements Observer<Child>{
@Override public Child actionOnEvent(Event<Child> e) { System.out.println("Mum pat baby........"); return e.source; } }
|