日期:2014-05-18  浏览次数:20719 次

关于《JAVA与模式》中,“工厂方法”模式的特大疑问?!
在农场系统例子中,如何调用Apple,Grape类中的SET/GET方法?是不是作者错了?
Apple和Grape类实现了Fruit接口,按照作者的意思,应该如下调用:
public   class   a  
{
        public   static   void   main(String[]   args)  
        {
                FruitGardener   a=new   AppleGardener();
                a.factory().“这里如何调用SET/GET方法?返回的是Fruit类型呀,难道要强制转换?”;
        }
}

------解决方案--------------------
做接口就是忽略相异只考虑共同方法,如果要个别对待还是要做强制转换的
------解决方案--------------------
FruitGardener a=new AppleGardener()
a.factory()

new AppleGardener()返回一個AppleGardener類型的對象,賦值給FruitGardener(傳第的是一個 引用),這裡是 "上傳 ".
對象類型自動變化成基類的類型,但此時在a的實際對象是個AppleGardener
類型的.a.factory(),調用的是AppleGardener類的方法,返回值為Apple類型的對象.