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 ...