public class CountingDuckFactory implements AbstractDuckFactory {
    @Override
    public Quackable createMallardDuck() {
        return new QuackCounter(new MallardDuck());
    }

    @Override
    public Quackable createRedheadDuck() {
        return new QuackCounter(new RedheadDuck());
    }

    @Override
    public Quackable createDuckCall() {
        return new QuackCounter(new DuckCall());
    }

    @Override
    public Quackable createRubberDuck() {
        return new QuackCounter(new RubberDuck());
    }
}

  1. public class CountingDuckFactory implements AbstractDuckFactory {
  2. @Override public Quackable createMallardDuck() { return new QuackCounter(new MallardDuck()); }
  3. @Override public Quackable createRedheadDuck() { return new QuackCounter(new RedheadDuck()); }
  4. @Override public Quackable createDuckCall() { return new QuackCounter(new DuckCall()); }
  5. @Override public Quackable createRubberDuck() { return new QuackCounter(new RubberDuck()); }
  6. }