Merge pull request #67 from KunwarVikas/stackandqueue
Behavioral Design Pattern - Observer Pattern
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public class FirstSubscriber implements IObserver {
|
||||
@Override
|
||||
public void update(Update m) {
|
||||
System.out.println("MessageSubscriberOne :: " + m.getMessageContent());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public interface IObserver {
|
||||
public void update(Update m);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public interface ISubject {
|
||||
public void attach(IObserver o);
|
||||
public void detach(IObserver o);
|
||||
public void notifyUpdate(Update m);
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MessagePublisher implements ISubject {
|
||||
|
||||
private List<IObserver> observers = new ArrayList<>();
|
||||
|
||||
////in multithreaded environment, please use thread-safe collections
|
||||
@Override
|
||||
public void attach(IObserver o) {
|
||||
observers.add(o);
|
||||
}
|
||||
|
||||
//in multithreaded environment, please use thread-safe collections
|
||||
@Override
|
||||
public void detach(IObserver o) {
|
||||
observers.remove(o);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notifyUpdate(Update m) {
|
||||
for(IObserver o: observers) {
|
||||
o.update(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public class ObserverPatternDemo {
|
||||
|
||||
public static void main(String[] args) {
|
||||
FirstSubscriber firstSubscriber = new FirstSubscriber();
|
||||
SecondSubscriber secondSubscriber = new SecondSubscriber();
|
||||
ThirdSubscriber thirdSubscriber = new ThirdSubscriber();
|
||||
|
||||
MessagePublisher p = new MessagePublisher();
|
||||
|
||||
p.attach(firstSubscriber);
|
||||
p.attach(secondSubscriber);
|
||||
|
||||
p.notifyUpdate(new Update("This is the first update")); //s1 and s2 will receive the update
|
||||
|
||||
p.detach(firstSubscriber);
|
||||
p.attach(thirdSubscriber);
|
||||
|
||||
p.notifyUpdate(new Update("This is the second update")); //s2 and s3 will receive the update
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public class SecondSubscriber implements IObserver {
|
||||
@Override
|
||||
public void update(Update m) {
|
||||
System.out.println("MessageSubscriberTwo :: " + m.getMessageContent());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public class ThirdSubscriber implements IObserver {
|
||||
@Override
|
||||
public void update(Update m) {
|
||||
System.out.println("MessageSubscriberThree :: " + m.getMessageContent());
|
||||
}
|
||||
}
|
||||
13
com/javadevjournal/design/behavioral/observer/Update.java
Normal file
13
com/javadevjournal/design/behavioral/observer/Update.java
Normal file
@@ -0,0 +1,13 @@
|
||||
package main.com.kunwar.designpatterns.behavioral.observer;
|
||||
|
||||
public class Update {
|
||||
final String messageContent;
|
||||
|
||||
public Update(String m) {
|
||||
this.messageContent = m;
|
||||
}
|
||||
|
||||
public String getMessageContent() {
|
||||
return messageContent;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user