请教工厂方法的问题。

我看了天极网http://www.yesky.com/20011128/207301_2.shtml里工厂方法的例子,对其有点疑问,工厂方法确实能够产生很多实例,但这些实例的很多特性都被淹没了,如何使用这些实例呢?

apple为什么要实现FruitIF和PlantIF两个接口?
Fruit和Veggie不都是Plant的一个种类吗?
我认为这样做较妥当
interface PlantIF{
void grow();
void harvest();
void plant();
}
interface FruitIF extends PlantIF{}
interface VeggieIF extends PlantIF{
void pesticideDust();
}
但这样做的结果是用工厂方法产生的apple和tomato只有PlantIF的特征,如何获得tomato.pesticideDust()??

还有结合抽象工厂来说
Gardener就是它的抽象工厂?
FruitGardener、VeggieGardener是它的工厂方法??

那个例子从我个人来说,我认为很复杂,容易令人误解。
我一直认为讲解设计模式的例子一定要具备两个特点;
1.例子本身不能具有专业背景,否则读者理解例子时还需要了解专业背景。
2.例子也不能举一些太常识的东西,比如蔬菜 水果,平时接触中没有那么多复杂的概念,你一定在其中搞个什么工厂模式来,一般人都要范疑惑:平常我没想这么复杂阿,而且熟悉的东西各人理解可能不一样。
上面你那样理解我觉得也可以。

工厂方法很简单,经常和classLoad使用,抽象工厂一般系统不容易碰到,所以甭费劲了解他们到底差别有多大。