Dag allen,
ik heb dit:
en de classe Observable:
Maar nu geeft iet bij classe: ModelDuck bij deze regel:
ErrorMessage: registerObserver(java.util.Observer) in Observable cannot be applied to (Observer)
observable.registerObserver(observer);
Alvast enorm bedankt.
Niels.
ik heb dit:
Code:
public class ModelDuck implements Quackable {
Observable observable;
public ModelDuck(){
observable = new Observable(this);
}
public void quack(){
System.out.println("");
notifyObservers();
}
public void registerObserver(Observer observer){
observable.registerObserver(observer);
}
public void notifyObservers(){
observable.notifyObservers();
}
}
en de classe Observable:
Code:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Observer;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author savant
*/
public class Observable implements QuackObservable {
ArrayList observers = new ArrayList();
QuackObservable duck;
public Observable(QuackObservable quack){
this.duck = duck;
}
public void registerObserver(Observer observer){
observers.add(observer);
//observable.notifyObservers();
}
public void notifyObservers(){
//notifyObservers();
Iterator iterator = observers.iterator();
while(iterator.hasNext()){
Observer observer = (Observer)iterator.next();
//observer.update(duck);
}
}
}
Code:
public interface Quackable extends QuackObservable {
public void quack();
//System.out.println("TestQuack");
//notifyObservers();
}//End method
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author savant
*/
public class DuckSimulator {
public static void main(String[] args) {
DuckSimulator simulator = new DuckSimulator();
AbstractDuckFactory duckFactory = new CountingDuckFactory();
simulator.simulate(duckFactory);
}
void simulate(AbstractDuckFactory duckFactory) {
Quackable mallardDuck = duckFactory.createMallardDuck();
Quackable redheadDuck = duckFactory.createRedheadDuck();
Quackable rubberDuck = duckFactory.createRubberDuck();
Quackable gooseDuck = new GooseAdapter(new Goose());
//Quackable goose = new GooseAdapter(new Goose());
Flock flockOfDucks = new Flock();
flockOfDucks.add(redheadDuck);
//flockOfDucks.add(duckCall);
flockOfDucks.add(rubberDuck);
flockOfDucks.add(gooseDuck);
Flock flockOfMallard = new Flock();
Quackable mallardOne = duckFactory.createMallardDuck();
// Quackable mallardTwo = duckFactory.createMallardDuck();
// Quackable mallardThree = duckFactory.createMallardDuck();
//Quackable mallardFour = duckFactory.createMallardDuck();
Quackable rubberOne = duckFactory.createRubberDuck();
flockOfMallard.add(mallardOne);
// flockOfMallard.add(mallardTwo);
// flockOfMallard.add(mallardThree);
// flockOfMallard.add(mallardFour);
flockOfDucks.add(rubberOne);
flockOfDucks.add(flockOfMallard);
flockOfDucks.add(flockOfDucks);
System.out.println("\nDuck Simulator: With Observer");
Quackologist quackologist = new Quackologist();
flockOfDucks.registerObserver(quackologist);
simulate(flockOfDucks);
System.out.println("\nDuck Simulator: With Abstract Factory");
simulate(mallardDuck);
simulate(redheadDuck);
simulate(rubberDuck);
simulate(gooseDuck);
System.out.println("The ducks quacked " +
QuackCounter.getQuacks() +
" times");
}
void simulate(Quackable duck) {
duck.quack();
}
}
Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author savant
*/
public interface Observer {
public void update(QuackObservable duck);
}
Maar nu geeft iet bij classe: ModelDuck bij deze regel:
Code:
observable.registerObserver(observer);
ErrorMessage: registerObserver(java.util.Observer) in Observable cannot be applied to (Observer)
observable.registerObserver(observer);
Alvast enorm bedankt.
Niels.
Laatst bewerkt: