观察者:
com.lone.watcherlombok.lombok.java.util.function.BiConsumerWeatherObserver Observer { String BiConsumer<WeatherSubjectWeatherObserver> (Subject subject) { (!(subject WeatherSubject)) { IllegalArgumentException()} .accept((WeatherSubject) subject)} }
测试:
com.lone.watchercom.lone.watcher.WeatherSubject.Statelombok.extern.slf4j.Main { (String[] args) { Observer girlfriend = WeatherObserver((subjectobserver) -> { State state = subject.getSubjectState()(State.== state) { .info(observer.getName()subject.getContent())} })Observer mother = WeatherObserver((subjectobserver) -> { State state = subject.getSubjectState()(State.== state || State.== state) { .info(observer.getName()subject.getContent())} })WeatherSubject subject = WeatherSubject()subject.attach(girlfriend) .attach(mother)subject.setSubjectState(State.)subject.setContent()} }
可否这样写,用户自定义自己的行为,Subject的广播仍然存在,但在用户端过滤了。