Skip to content

Commit a71f32f

Browse files
committed
Added Observer
1 parent 627c95b commit a71f32f

File tree

5 files changed

+77
-0
lines changed

5 files changed

+77
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package BehavioralPatterns.Observer;
2+
3+
public interface Observer {
4+
void update(String message);
5+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
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+
}

0 commit comments

Comments
 (0)