java工廠模式

2021-09-24 09:27:22 字數 2660 閱讀 5230

講解三種工廠模式,並比較各自優缺點

/**

* @author gjing

* 抽象產品

**/inte***ce

product

/** * 產品a

*/class

producta

implements

product

}/**

* 產品b

*/class

productb

implements

product

}/**

* 產品工廠

*/class

productfactory

}}

** 呼叫:**

/**

* @author gjing

**/public

class

test

}

/**

* @author gjing

* 抽象工廠

**/public

inte***ce

factory

/** * @author gjing

* 建立產品a 的工廠a

**/class

factorya

implements

factory

}/**

* @author gjing

* 工廠b負責建立產品b

**/class

factoryb

implements

factory

}

/**

* @author gjing

* 抽象產品

**/inte***ce

product

/** * 產品a

*/class

producta

implements

product

}/**

* 產品b

*/class

productb

implements

product

}

呼叫

public

class

test

}

/**

* @author gjing

**/public

inte***ce

factory

class

factorya

implements

factory

@override

public product getproductb()

}

/**

* @author gjing

* 抽象產品

**/abstract

class

product

/** * 抽象產品a

*/abstract

class

producta

extends

product

/** * 抽象產品a的具體某個產品

*/class

productaa

extends

producta

}/**

* 抽象產品b

*/abstract

class

productb

extends

product

/** * 抽象產品b的具體某個產品

*/class

productbb

extends

productb

}

呼叫

public

class

test

}

以上為三種不同工廠模式,他們各自的優缺點是啥?

優點:將建立使用工作分開,不必關心類物件如何建立,實現了解耦;

缺點:違背「開放 - 關閉原則」,一旦新增新產品就不得不修改工廠類的邏輯,這樣就會造成工廠邏輯過於複雜。

a. 優點:      

1. 符合開-閉原則:新增一種產品時,只需要增加相應的具體產品類和相應的工廠子類即可

2. 符合單一職責原則:每個具體工廠類只負責建立對應的產品

b. 缺點:

1. 增加了系統的複雜度:類的個數將成對增加

2. 增加了系統的抽象性和理解難度

3. 乙個具體工廠只能建立一種具體產品

優點:

1.降低耦合

2.符合開-閉原則

3.符合單一職責原則

4.不使用靜態工廠方法,可以形成基於繼承的等級結構。

缺點:難以擴充套件新種類產品

定義

對比

以上為個人理解,如理解有誤歡迎各位指正

java工廠模式

定義乙個用於建立物件的介面,我們需要乙個物件例項的時候就可以通過呼叫介面的方法來獲取我們想要的物件例項。首先,最簡單的 簡單工廠介面,可以返回例項 public inte ce factory 工廠實現類,返回money例項 public class moneyfactoryimpl impleme...

Java工廠模式

工廠模式理解起來並不是很難 只要耐心看看 理解它的運作機理就好了。運用時就要看個人的靈活性了。工廠是用來生產東西,但是從程式的角度講就是 用乙個工廠類來生產出你所需要的物件,這個生產出的物件可以是任意形式的 包括人,動物,水果,植物等不一定是要 機械性的東西 這是它跟現實工廠的區別之一。產品是由工廠...

java工廠模式

1.定義介面類idaouser public inte ce idaouser 2.定義工廠類,此工廠類實現了兩個不同類的呼叫。public final class daouse ctory return null 3 介面的實現,實現了介面idaouser的方法 public class daou...