前言:
為什么之前寫過Golang 版的設計模式,還在重新寫Java 版?
答:因為對于我而言,當然也希望對正在學習的大伙有幫助。Java作為一門純面向對象的語言,更適合用于學習設計模式。
為什么類圖要附上uml
因為很多人學習有做筆記的習慣,如果單純的只是放一張圖片,那么學習者也只能復制一張圖片,可復用性較低,附上uml,方便有新理解時,快速出新圖。
————————————————
??[設計模式Java實現(xiàn)附plantuml源碼]專鏈
- 確保對象的唯一性~單例模式
簡單工廠模式(Simple Factory Pattern
):定義一個工廠類,它可以根據(jù)參數(shù)的不同返回不同類的實例,被創(chuàng)建的實例通常都具有共同的父類。因為在簡單工廠模式中用于創(chuàng)建實例的方法是靜態(tài)(static
)方法,因此簡單工廠模式又被稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式。
簡單工廠模式的要點在于:當你需要什么,只需要傳入一個正確的參數(shù),就可以獲取你所需要的對象,而無須知道其創(chuàng)建細節(jié)。
@startuml
class Factory {
+ {static} factoryMethod(): Product
}
abstract class Product {
+ {abstract} operation(): void
}
class ConcreteProductA extends Product {
+ operation(): void
}
class ConcreteProductB extends Product {
+ operation(): void
}
Factory -up-> ConcreteProductA : creates >
Factory -up-> ConcreteProductB : creates >
@enduml
代碼實現(xiàn)
package create;
// 抽象產(chǎn)品角色
abstract class Product {
abstract void operation();
}
// 具體產(chǎn)品角色A
class ConcreteProductA extends Product {
@Override
public void operation() {
System.out.println("ConcreteProductA operation");
}
}
// 具體產(chǎn)品角色B
class ConcreteProductB extends Product {
@Override
public void operation() {
System.out.println("ConcreteProductB operation");
}
}
// 工廠類
class Factory {
public static Product factoryMethod(String productType) {
Product product = null;
if (productType.equals("A")) {
product = new ConcreteProductA();
} else if (productType.equals("B")) {
product = new ConcreteProductB();
}
return product;
}
}
// 客戶端代碼
public class SimpleFactory {
public static void main(String[] args) {
// 創(chuàng)建具體產(chǎn)品A
Product productA = Factory.factoryMethod("A");
productA.operation();
// 創(chuàng)建具體產(chǎn)品B
Product productB = Factory.factoryMethod("B");
productB.operation();
}
}
簡單工廠模式總結
簡單工廠模式提供了專門的工廠類用于創(chuàng)建對象,將對象的創(chuàng)建和對象的使用分離開,它作為一種最簡單的工廠模式在軟件開發(fā)中得到了較為廣泛的應用。
主要優(yōu)點簡單工廠模式的主要優(yōu)點如下:
(1)工廠類包含必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產(chǎn)品類的實例??蛻舳丝梢悦獬苯觿?chuàng)建產(chǎn)品對象的職責,而僅僅“消費”產(chǎn)品。
簡單工廠模式實現(xiàn)了對象創(chuàng)建和使用的分離。
(2)客戶端無須知道所創(chuàng)建的具體產(chǎn)品類的類名,只需要知道具體產(chǎn)品類所對應的參數(shù)即可。
對于一些復雜的類名,通過簡單工廠模式可以在一定程度減少使用者的記憶量。
(3)通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產(chǎn)品類,在一定程度上提高了系統(tǒng)的靈活性。文章來源:http://www.zghlxwxcb.cn/news/detail-803959.html
簡單工廠模式的主要缺點如下:
(1)由于工廠類集中了所有產(chǎn)品的創(chuàng)建邏輯,職責過重,一旦不能正常工作,整個系統(tǒng)都要受到影響。
(2)使用簡單工廠模式勢必會增加系統(tǒng)中類的個數(shù)(引入了新的工廠類),增加了系統(tǒng)的復雜度和理解難度。
(3)系統(tǒng)擴展困難。一旦添加新產(chǎn)品就不得不修改工廠邏輯,在產(chǎn)品類型較多時,有可能造成工廠邏輯過于復雜,不利于系統(tǒng)的擴展和維護。
(4)簡單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無法形成基于繼承的等級結構。文章來源地址http://www.zghlxwxcb.cn/news/detail-803959.html
到了這里,關于[設計模式Java實現(xiàn)附plantuml源碼~創(chuàng)建型] 集中式工廠的實現(xiàn)~簡單工廠模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!