【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么_第1頁
【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么_第2頁
【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么_第3頁
【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么_第4頁
【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么_第5頁
免費預覽已結束,剩余2頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android中工廠方法模式的作用是什么

這期內容當中在下將會給大家?guī)碛嘘PAndroid中工廠方法模式的作用是什么,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。一、介紹工廠方法模式(FactoryPattern),是創(chuàng)建型設計模式之一。工廠方法模式是一種結構簡單的模式,其在我們平時開發(fā)中應用很廣泛,也許你并不知道,但是你已經使用了無數(shù)次該模式了,如Android中的Activity里的各個生命周期方法,以onCreate方法為例,它就可以看作是一個工廠方法,我們在其中可以構造我們的View并通過setContentView返回給framework處理等,相關內容我們下面再講,先看看工廠方法模式定義。二、定義定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪個類。三、使用場景在任何需要生成復雜對象的地方,都可以使用工廠方法模式。復雜對象適合使用工廠模式,用new就可以完成創(chuàng)建的對象無需使用工廠模式。四、模式的簡單實現(xiàn)抽象產品類:public

abstract

class

Product

{

/**

*

產品類的抽象方法

*

由具體的產品類去實現(xiàn)

*

*/

public

abstract

void

method();

}具體產品類A:public

class

ConcreteProductA

extends

Product

{

@Override

public

void

method()

{

System.out.println("我是具體的產品A");

}

}具體產品類B:public

class

ConcreteProductB

extends

Product

{

@Override

public

void

method()

{

System.out.println("我是具體的產品B");

}

}抽象工廠類:public

abstract

class

Factory

{

/**

*

抽象工廠方法

*

具體由子類實現(xiàn)

*

*

@return

具體的產品對象

*

*/

public

abstract

Product

createProduct();

}具體工廠類:public

class

ConcreteFactory

extends

Factory

{

/**

*

具體工廠類

*

*/

@Override

public

Product

createProduct()

{

return

new

ConcreteProductA();

}

}客戶類:public

class

Client

{

public

static

void

main(String[]

args)

{

Factory

factory

=

new

ConcreteFactory();

Product

product

=

factory.createProduct();

product.method();

}

}結果:我是具體的產品A這里的幾個角色都很簡單,主要分為四大模塊,一是抽象工廠,其為工廠方法模式的核心;二是具體工廠,其實現(xiàn)了具體的業(yè)務邏輯;三是抽象產品,是工廠方法模式所創(chuàng)建的產品的父類;四是具體產品,為實現(xiàn)抽象產品的某個具體產品的對象。上述的代碼中我們在Client類中構造了一個工廠對象,并通過其生產了一個產品對象,這里我們得到的產品對象是ConcreteProductA的實例,如果想得到ConcreteProductB的實例,更改ConcreteFactory中的邏輯即可:public

class

ConcreteFactory

extends

Factory

{

/**

*

具體工廠類

*

*/

@Override

public

Product

createProduct()

{

//return

new

ConcreteProductA();

return

new

ConcreteProductB();

}

}這種方式比較常見,需要哪一個產品就生產哪一個,有時候也可以利用反射的方式更簡潔的來生產具體產品對象,此時,需要在工廠方法的參數(shù)列表中傳入一個Class類來決定是哪一個產品類:public

abstract

class

Factory

{

/**

*

抽象工廠方法

*

具體由子類實現(xiàn)

*

*

@param

clz

產品對象類類型

*

*

@return

具體的產品對象

*

*/

public

abstract

<T

extends

Product>

T

createProduct(Class<T>

clz);

}對于具體的工廠類,則通過反射獲取類的示例即可:public

class

ConcreteFactory

extends

Factory

{

/**

*

具體工廠類

*

*/

@SuppressWarnings("unchecked")

@Override

public

<T

extends

Product>

T

createProduct(Class<T>

clz)

{

Product

product

=

null;

try

{

product

=

(Product)

Class.forName(clz.getName()).newInstance();

}

catch

(Exception

e)

{

e.printStackTrace();

}

return

(T)product;

}

}最后在看看Client中的實現(xiàn):public

class

Client

{

public

static

void

main(String[]

args)

{

Factory

factory

=

new

ConcreteFactory();

Product

product

=

factory.createProduct(ConcreteProductB.class);

product.method();

}

}需要哪一個類的對象就傳入哪一個類的類型即可,這種方法比較簡潔、動態(tài),如果你不喜歡這種方式,也可以嘗試為每一個產品都定義一個具體的工廠,各司其職。public

class

ConcreteFactoryA

extends

Factory

{

/**

*

具體工廠類

**/

@Override

public

Product

createProduct()

{

return

new

ConcreteProductA();

}

}

public

class

ConcreteFactoryB

extends

Factory

{

/**

*

具體工廠類

**/

@Override

public

Product

createProduct()

{

return

new

ConcreteProductB();

}

}

public

class

Client

{

public

static

void

main(String[]

args)

{

Factory

factoryA

=

new

ConcreteFactoryA();

Product

productA

=

factoryA.createProduct();

productA.method();

Factory

factoryB

=

new

ConcreteFactoryB();

Product

productB

=

factoryB.createProduct();

productB.method();

}

}像這樣擁有多個工廠的方式我們稱為多工廠方法模式,同樣的,回到我們最初的那個工廠方法模式,當我們的工廠只有一個的時候,我們還是為工廠提供了一個抽象類,那么,我們是否可以將其簡化掉呢?如果確定你的工廠類只有一個,那么簡化掉抽象類是肯定沒問題的,我們只需要將對應的工廠方法改為靜態(tài)方法即可:public

class

Factory

{

/**

*

具體工廠類

**/

@Override

public

static

Product

createProduct()

{

return

new

ConcreteProductA();

}

}像這樣的方式又稱為簡單工廠模式或靜態(tài)工廠模式,它是工廠方法模式的一個弱化版本。其實到這里大家應該可以發(fā)現(xiàn),工廠方法模式是完全符合設計原則的,其降低了對象之間的耦合度,而且,工廠方法模式依賴于抽象的架構,其將實例化的任務交由子類去完成,有非常好的擴展性。五、Android源碼中的工廠方法模式Activ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論