小白自學設計模式之工廠模式

2021-08-20 13:08:37 字數 2560 閱讀 9517

最簡單的案例:

/**

* 簡單工廠模式

* 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 將建立物件...