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
          主站蜘蛛池模板: 江阴市| 长岭县| 宜昌市| 西城区| 柞水县| 磐石市| 浏阳市| 珲春市| 高密市| 咸阳市| 昌江| 德令哈市| 湖州市| 昌黎县| 巴楚县| 巴南区| 淅川县| 信丰县| 夏河县| 长寿区| 高安市| 达尔| 西平县| 阳城县| 炉霍县| 于都县| 江华| 太康县| 尉犁县| 大丰市| 洞口县| 平塘县| 昌黎县| 九江市| 重庆市| SHOW| 克什克腾旗| 班戈县| 德保县| 夹江县| 江陵县|