Coundy

             漫步風中,傾聽自己的腳步,在自我沉浸中,找尋逝去的靈魂

          posts - 27,comments - 2,trackbacks - 0

          一、對象的創建
                 第1條:考慮用靜態工廠方法代替構造函數
                        概念:所謂靜態工廠方法(static factory method),實際上只是一個簡單的靜態方法,它返回的是類
                                   的一  個實例。
                        例子:pbulic static Boolean getBoolean()
                                    {
                                         return (Boolean.TRUE);
                                    }
                          優點:1、與構造函數相比,靜態工廠方法可以具有一個具有意義的名字
                                       2、與構造函數相比,每一次調用并不一定非要創建一個新的對象
                                             例子:
                                                     class SingletonFactory
                                                      {   // 可以看作全局唯一的變量
                                                            private static singletonfactory=new SingletonFactory();

                                                            private SingletonFactory()
                                                            {}

                                                            public static SingletonFactory getSingletonFactoryInstance()
                                                            {    
                                                                //這里并不是每次都返回一個新的對象,而是反復返回同一個對象
                                                                  return singletonfactory;
                                                              }
                                                       }
                                         3、與構造函數不同,可以返回一個原返回類型的子類型的對象
                                                 例子:
                                                         Interface BaseInterface
                                                          {
                                                                  void printlns();
                                                          }
                                                          class BaseImp implements BaseInterface
                                                          {
                                                                   public BaseImp ()
                                                                   {}
                                                                   public void printlns()
                                                                    {
                                                                            System.out.println("BaseImp's printlns method ");
                                                                     }
                                                          }

                                                          abstract class SingletionFactory
                                                          {
                                                                private static SingletionFactory singletionfactory;
                                                               private static String classname="";
                                                                private static Object object=new Object();

                                                                public static BaseInterface getBaseInterface()
                                                                {
                                                                         if (singletionfactory==null)
                                                                          {
                                                                               synchorinzed(obj){
                                                                                    try
                                                                                    {
                                                                                             singletionfactory=(SingletionFactory)Class.forNmae(
                                                                                             classname).newInstaance();
                                                                                    }
                                                                                    catch(ClassNotFoundException e)
                                                                                    {
                                                                                      
                                                                                     }
                                                                               }
                                                                           }
                                                                          return singletionfactory.createObject();
                                                                 }
                                                                  abstract BaseInterface createObject();
                                                          }

                                缺點:
                                    1、如果類沒有public or protected 構造函數,不能子類化
                                    2、與其他靜態方法沒有任何區別,靜態工廠方法代表了一種對規范的背離
          posted on 2007-04-12 04:14 Coundy 閱讀(1522) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 深州市| 泽州县| 海晏县| 张家界市| 丰都县| 武义县| 南宁市| 旅游| 蓬莱市| 阳新县| 巩义市| 淅川县| 德令哈市| 额尔古纳市| 三穗县| 金川县| 洱源县| 镇坪县| 潮安县| 宜丰县| 大港区| 阿瓦提县| 新竹县| 汉源县| 中阳县| 仁布县| 晋江市| 汉阴县| 邳州市| 丹江口市| 丰镇市| 大新县| 若羌县| 招远市| 东安县| 仪陇县| 海南省| 巴塘县| 绵阳市| 扶绥县| 宜昌市|