File tree Expand file tree Collapse file tree 5 files changed +77
-0
lines changed
src/BehavioralPatterns/Observer Expand file tree Collapse file tree 5 files changed +77
-0
lines changed Original file line number Diff line number Diff line change 1+ package BehavioralPatterns .Observer ;
2+
3+ public class Main {
4+ public static void main (String [] args ) {
5+ NewsAgency newsAgency = new NewsAgency ();
6+
7+ Observer channel1 = new NewsChannel ("Channel 1" );
8+ Observer channel2 = new NewsChannel ("Channel 2" );
9+ Observer channel3 = new NewsChannel ("Channel 3" );
10+
11+ newsAgency .registerObserver (channel1 );
12+ newsAgency .registerObserver (channel2 );
13+ newsAgency .registerObserver (channel3 );
14+
15+ newsAgency .publishNews ("Breaking news!" );
16+
17+ newsAgency .unregisterObserver (channel2 );
18+
19+ newsAgency .publishNews ("Another news!" );
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ package BehavioralPatterns .Observer ;
2+
3+ import java .util .ArrayList ;
4+ import java .util .List ;
5+
6+ public class NewsAgency implements Subject {
7+ private List <Observer > observers = new ArrayList <>();
8+
9+ @ Override
10+ public void registerObserver (Observer observer ) {
11+ observers .add (observer );
12+ }
13+
14+ @ Override
15+ public void unregisterObserver (Observer observer ) {
16+ observers .remove (observer );
17+ }
18+
19+ @ Override
20+ public void notifyObservers (String message ) {
21+ for (Observer observer : observers ) {
22+ observer .update (message );
23+ }
24+ }
25+
26+ public void publishNews (String news ) {
27+ System .out .println ("Publishing news: " + news );
28+ notifyObservers (news );
29+ }
30+ }
Original file line number Diff line number Diff line change 1+ package BehavioralPatterns .Observer ;
2+
3+ public class NewsChannel implements Observer {
4+ private String channelName ;
5+
6+ public NewsChannel (String channelName ) {
7+ this .channelName = channelName ;
8+ }
9+
10+ @ Override
11+ public void update (String message ) {
12+ System .out .println ("Received news on " + channelName + ": " + message );
13+ }
14+ }
Original file line number Diff line number Diff line change 1+ package BehavioralPatterns .Observer ;
2+
3+ public interface Observer {
4+ void update (String message );
5+ }
Original file line number Diff line number Diff line change 1+ package BehavioralPatterns .Observer ;
2+
3+ public interface Subject {
4+ void registerObserver (Observer observer );
5+ void unregisterObserver (Observer observer );
6+ void notifyObservers (String message );
7+ }
You can’t perform that action at this time.
0 commit comments