一、對象的創建
第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 閱讀(1521)
評論(0) 編輯 收藏 所屬分類:
Java