Theme.java
public interface Theme {
abstract void addObserver(Observer observer);
abstract void removeObserver(Observer observer);
abstract void service(String notice);
}
ConcreteTheme.java
public class ConcreteTheme implements Theme {
private List<Observer> observer=Collections.synchronizedList(new ArrayList<Observer>());
@Override
public void addObserver(Observer observer) {
this.observer.add(observer);
}
@Override
public void removeObserver(Observer observer) {
this.observer.remove(observer);
}
private void notice(String notice) {
if(this.observer.size()!=0){
for(Observer o : this.observer){
o.update_before(notice);
System.out.println(notice);
o.update_back(notice);
}
}else{
System.out.println(notice);
}
}
@Override
public void service(String notice) {
notice(notice);
}
}
Observer.java
public interface Observer {
abstract void update_before(String notice);
abstract void update_back(String notice);
}
ConcreteObserver.java
public class ConcreteObserver implements Observer {
@Override
public void update_before(String notice) {
}
@Override
public void update_back(String notice) {
}
}
DemoTest.java
public class DemoTest {
@Test
public void test1(){
Theme theme=new ConcreteTheme();
theme.addObserver(new Observer(){
@Override
public void update_before(String notice) {
System.out.println("监听前1");
}
@Override
public void update_back(String notice) {
System.out.println("监听后1");
}
});
theme.service("Hello");
}
}