UML类图:

【JAVA设计模式】观察者模式

抽象观察者类:

package com.jthao.design.des.observer;

public abstract class Observer {
	
	public abstract void update();

}

具体观察者类:

package com.jthao.design.des.observer;

public class ConcreteObserver extends Observer {

	private String name;

	private String observerState;

	private ConcreteSubject subject;

	public ConcreteObserver(ConcreteSubject subject,String name) {
		this.subject = subject;
		this.name = name;
	}

	@Override
	public void update() {
		observerState = subject.getSubjectState();
		System.out.println("观察者"+name+",状态是"+observerState);
	}

	public ConcreteSubject getSubject() {
		return subject;
	}

	public void setSubject(ConcreteSubject subject) {
		this.subject = subject;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getObserverState() {
		return observerState;
	}

	public void setObserverState(String observerState) {
		this.observerState = observerState;
	}
	
}

抽象主题:

package com.jthao.design.des.observer;

import java.util.ArrayList;
import java.util.List;

public abstract class Subject {

	public List<Observer> observers = new ArrayList<Observer>();

	public void attach(Observer observer) {
		observers.add(observer);
	}

	public void detach(Observer observer) {
		observers.remove(observer);
	}

	public void notify1() {
		for(Observer observer : observers) {
			observer.update();
		}
	}

}

具体主题类:

package com.jthao.design.des.observer;

public class ConcreteSubject extends Subject {
	
	private String subjectState;

	public String getSubjectState() {
		return subjectState;
	}

	public void setSubjectState(String subjectState) {
		this.subjectState = subjectState;
	}

}

相关文章: