JAVA設計模式 工廠模式

2021-08-09 04:32:57 字數 3253 閱讀 2290

package com.ph.gof23.factory.******factory;

public class nofactorydemo

}

package com.ph.gof23.factory.******factory;

public class ******factory else if("比亞迪".equals(type))else }

public static void main(string args)

}

優點:結構複雜度、客戶端複雜度和**複雜度佔優

缺點:不符合開閉原則(ocp)

建立乙個抽象工廠(creator)角色和抽象產品(product)角色介面

package com.ph.gof23.factory.factorymethod;

/** * 抽象產品(product)角色

* @author panghao

* */

public inte***ce  car

package com.ph.gof23.factory.factorymethod;

/** * 抽象工廠(creator)角色

* @author panghao

* */

public inte***ce ca***ctory

為每乙個產品增加乙個工廠類該類實現了抽象工廠(creator)角色和抽象產品(product)角色介面

package com.ph.gof23.factory.******factory;

/** * 奧迪

* @author panghao

* */

public class auid implements car

}

package com.ph.gof23.factory.factorymethod;

/** * 奧迪工廠

* @author panghao

* */

public class auidfactory implements ca***ctory

}

通過產品的產品工廠類來建立產品

package com.ph.gof23.factory.factorymethod;

public class factorymethoddemo

}

優點:符合開閉原則(ocp),通過增加新的工廠和產品來進行拓展,不需要修改已有的類

缺點:需要增加太多新的類,結構和**太過複雜,程式設計難度高,不易於管理

應用於存在多個產品族的場景

假設我們需要造一輛豪車和一輛破車,豪車和破車的部件的種類相同但是質量存在差異

那麼首先,我們需要把豪車和破車的每個部件造出來

package com.ph.gof23.factory.abstrafactory;

/** * 引擎

* @author panghao

* */

public inte***ce engin

//豪車

class luxuryengin implements engin

@override

public void start() }

//破車

class lowengin implements engin

@override

public void start()

}

package com.ph.gof23.factory.abstrafactory;

/** * 座椅

* @author panghao

* */

public inte***ce seat

class luxuryseat implements seat }

class lowseat implements seat

}

生產完了部件接下來我們需要在汽車工廠進行拼裝

package com.ph.gof23.factory.abstrafactory;

/** * 豪華車工廠

* @author panghao

* */

public class luxuryca***ctory implements ca***ctory

@override

public tyre createtyre()

@override

public seat createseat()

}

package com.ph.gof23.factory.abstrafactory;

/** * 破車工廠

* @author panghao

* */

public class lowca***ctory implements ca***ctory

@override

public tyre createtyre()

@override

public seat createseat()

}

完成拼裝後我們就可以試驗我們的新車了

package com.ph.gof23.factory.abstrafactory;

public class abstractfactorydemo

}

優點:

1、抽象工廠模式隔離了具體類的生產,使得客戶並不需要知道什麼被建立。

2、當乙個產品族中的多個物件被設計成一起工作時,它能保證客戶端始終只使用同乙個產品族中的物件。

3、增加新的具體工廠和產品族很方便,無須修改已有系統,符合「開閉原則」。

缺點:

增加新的產品等級結構很複雜,需要修改抽象工廠和所有的具體工廠類,對「開閉原則」的支援呈現傾斜性。

java設計模式 工廠模式

工廠模式 存在的目的 定義乙個用於建立複雜類的物件的介面。使用工廠模式,降低了類與類之間的耦合關係。分為三種實現方式 類之間的繼承結構不同 簡單工廠模式 工廠方法模式 抽象工廠模式。主要涉及的三種類 呼叫工廠的類,工廠類,產品類。先看乙個不適用工廠模式的類組織 class bmw32 class b...

JAVA設計模式 工廠模式

一 簡單工廠。它的缺點很明顯,當需要再新增乙個whitehuman類時,需要在工廠類中修改,則 的耦合性很高。建立需要用工廠new的class public inte ce human public class blackhuman implements human public class yel...

java設計模式 工廠模式

靜態工廠模式 為了建立物件而產生 1 有工廠類,有乙個可以根據需求返回建立的物件的方法 2 工廠類中的產生物件的方法的返回值型別是 父類的型別,產生的物件都是子類物件 3 強調 工廠類中的方法的返回值和返回的物件中存在著向上轉型的關係 public class cloth public class ...