最簡單的案例:
/**
* 簡單工廠模式
* 1.就是指不需要使用new物件來建立例項,遮蔽了內部實現的細節
* */
class factorya
public static factorya create()
public void showmethod()
}public class samplefactory
}
/**
* 簡單工廠模式
* 2. 實現的細節由子類去完成
* 以下案例是我們在 活動基類去抽取枝幹,然後由子類去實現特色的地方
* */
abstract class baseactivity
final void invoke(int resid)
}class myactivity extends baseactivity
}public class samplefactory
}// output:載入布局:291
/**
* 簡單工廠模式
* 3. 使用反射返回工廠物件
* */
class api
}class implapi extends api
}class myfactory catch (instantiationexception | illegalacces***ception | classnotfoundexception e)
return api;
}}public class samplefactory
}// output:implapi
android中有解析的方法亦是使用了工廠方法:
bitmap bitmap = bitmapfactory.decodefile("path"); // 傳入路徑返回bitmap物件
如下**所示呼叫了 decodestream()方法返回bitmap物件
public static bitmap decodefile(string pathname, options opts) catch (exception e) finally catch (ioexception e) }}
return bm;
}
public static bitmap decodestream(inputstream is, rect outpadding, options opts)
validate(opts);
bitmap bm = null;
trace.tracebegin(trace.trace_tag_graphics, "decodebitmap");
try else
if (bm == null && opts != null && opts.inbitmap != null)
setdensityfromoptions(bm, opts);
} finally
return bm;
}
然後具體的native方法如下**所示:
private static native bitmap nativedecodestream(inputstream is, byte storage,
rect padding, options opts);
private static native bitmap nativedecodefiledescriptor(filedescriptor fd,
rect padding, options opts);
private static native bitmap nativedecodeasset(long nativeasset, rect padding, options opts);
private static native bitmap nativedecodebytearray(byte data, int offset,
int length, options opts);
private static native boolean nativeisseekable(filedescriptor fd);
可以發現簡單工廠在android中還是很常用的,就是只需要傳入特徵的引數就可以生成特定的物件。
關於父類引用指向子類物件的疑惑案例:
/**
* 父類引用指向子類物件
* 物件的存在:表面和實際型別
* 表面型別決定能呼叫哪些方法
* 實際型別決定的是呼叫的時實際的執行方法
* */
class abc
}class abcd extends abc
void domethod()
}public class testb
}/*output:bcd*/
自學設計模式之工廠方法模式
1.定義 工廠方法模式 定義乙個建立物件的介面,讓子類決定例項化哪乙個類,即使乙個類的例項化延遲到子類。2.工廠方法模式的四個要素 抽象工廠 creator 角色 是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。具體工廠 concrete creator 角色 ...
自學日記 設計模式 工廠模式
設計模式大多應用於框架級別,我們在看框架原始碼時,會看到各種設計模式,雖然我肯定是寫不出來框架的,但是還是覺得要學一下!故事開始 聯盟和部落脆弱的協議又扯淡了,戰爭一觸即發,雙方需要坦克,飛機,ak47,m4a1,東風快遞等各種重火力。烏瑞恩國王開始為戰略物資發愁,於是指示希爾瓦娜斯籌措物資。希爾瓦...
設計模式 設計模式之工廠模式
工廠方法模式 建立模式 使用場景?作用?形態?場景 大量類似的實體類 要建立的實體類都是同一本質的東西 披薩 有部分類似功能 準備 烘烤 切法 實現方式不一樣 準備的材料不同 烘烤時間不同 切法不同 將繁瑣複雜的建立類的過程聚集在一起,有序清晰 把具體例項化的過程從客戶 中抽離 作用 1 將建立物件...