閱讀筆記常見的設計模式之四 工廠模式

2021-08-08 14:09:29 字數 2984 閱讀 7434

先看乙個例子:

抽象產品類

public

abstract

class product

具體產品類a

public

class

concreteproducta

extends

product

}

具體產品類b

public

class

concreteproductb

extends

product

}

方式一

抽象工廠類

public

abstract

class factory;

}

具體工廠類a

public

class

concretefactory

extends

factory

}

客戶類

public

class client

}

理解:

首先是定義兩個抽象類:生產抽象類和工廠抽象類,前者由子類繼承,實現具體子類所要生產的方法,後者由具體工廠實現,具體工廠決定自己要實現那個產品,之間的聯絡,是由抽象工廠類的createproduct方法建立的,這個方法返回的是produce型別,意味著可以通過createproduct得到product物件,從而建立產品.

這裡我們得到的是concreteproducta的例項,如果我們想得到concreteproductb的例項,則只需要改一下即可:

public

class

concretefactory

extends

factory

}

方式二

利用反射的方式

//抽象的工廠類

public

abstract

class

factory

//具體的工廠類

public

class

concretefactory

extends

factory

catch(exception e)

return (t)p;

}}

//client的實現

public

class client

}

來看個工廠模式的實戰:

public

abstract classiohandler

filehandler

public

class

filehandler

extends

iohandler

@override

public

void

remove(string id)

@override

public

void

update(string id,string name)

@override

public

void

query(string id)

//..

}

xmlhandler

public

class

xmlhandler

extends

iohandler

@override

public

void

remove(string id)

@override

public

void

update(string id,string name)

@override

public

void

query(string id)

//..

}

dbhandler

public

class

dbhandler

extends

iohandler

@override

public

void

remove(string id)

@override

public

void

update(string id,string name)

@override

public

void

query(string id)

//..

}

工廠類的定義

public

class iofactory

catch(exception e)

return t handler;

}}

最後在activity中從不同資料檔案中查詢得到的資料展示在乙個textview

public

class

factoryactivity

extends

activity

});btnxml.setonclicklistener(new view.onclicklistener()

});b***b.setonclicklistener(new view.onclicklistener()

});}

}

優點:降低物件的耦合,很好的擴充套件性

缺點:每次加入乙個新產品就需要乙個抽象類,新產品類和具體工廠類

設計模式之工廠設計模式筆記

定義 在基類中定義建立物件的乙個介面,讓子類決定例項化哪個類。工廠方法讓乙個類的的例項化延遲到子類中進行。為什麼要用工廠模式?適用場景 需要建立的物件較少。客戶端不關心物件的建立過程。簡單工廠例項public abstract class animal class catextends animal...

設計模式筆記之工廠模式

概念 工廠模式屬於建立型模式。定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,工廠模式使其建立過程延遲到子類進行。示例 定義乙個介面 public inte ce shape 介面的第乙個實現類 public class rectangle implements shape 介面的第二個...

《head first》設計模式之四 工廠模式

工廠模式一章講了很多內容,但是設計思想是一致的 1 變數不可以持有具體類的引用 如果使用new 就會持有具體類的引用,可以用工廠類避開 2 不要讓類派生自具體類 如果派生自具體類,那就是依賴具體的實現類,彈性差,請派生自抽象類或者介面 3 不要覆蓋基類中已實現的方法 如果覆蓋基類已實現的方法,那基類...