0
Java Swing 응용 프로그램에서 관찰 패턴을 구현하려고합니다. 내 학교 프로젝트로 작업 중입니다. 저는이 두 개의 매우 간단한 클래스를가집니다. 하나는 싱글 톤 관찰 가능 모델이고 다른 하나는 옵서버입니다.왜 옵서버에 알리지 않습니까?
관찰 가능한 모델 :
public class ModelObserver implements Observer {
public static Logger LOG = Logger.getLogger(ModelObserver.class);
@Override
public void update(Observable o, Object arg) {
if (arg instanceof Model.Actions) {
Model.Actions action = (Actions) arg;
switch (action) {
case SELECTED_IMAGE:
selectedImage();
break;
case COLORS_COUNT:
colorsCount();
break;
default:
LOG.warn("Not supported action: " + action);
break;
}
} else {
LOG.warn("Not supported action: " + String.valueOf(arg));
}
}
private void colorsCount() {
LOG.info("Colors count has been changed....");
}
private void selectedImage() {
LOG.info("Image has been changed....");
}
}
모든 작품
public class Model extends Observable {
private static Model instance = null;
private File selectedImageFile;
private int colorsCount;
public static Logger LOG = Logger.getLogger(Model.class);
private Model() {
this.initialize();
}
private void initialize() {
addObserver(new ModelObserver());
}
public static Model instance() {
if (Model.instance == null) {
Model.instance = new Model();
}
return Model.instance;
}
public void setColorsCount(int colorsCount) {
this.colorsCount = colorsCount;
notifyObservers(Actions.COLORS_COUNT);
}
public void selectedImage(File imageFile) {
this.selectedImageFile = imageFile;
notifyObservers(Actions.SELECTED_IMAGE);
}
public enum Actions {
SELECTED_IMAGE, COLORS_COUNT
}
}
관찰자 - (내 경우에는 하나의) 모델 인스턴스 레지스터 변화하지만, 관찰자는 통지하지 않습니다. 방법 ModeObserver.update(Observable o, Object arg)
에는 모델이 변경되었다는 언급이 없습니다. 그래서 내 문제는 관찰자에게 알리지 않는다는 것입니다.
내가 뭘 잘못하고 있니? 고맙습니다.
더 빨리 도움을 받으려면 SSCCE를 게시하십시오. –