目錄
一、簡單工廠模式
1.1 簡單工廠模式的介紹
二、工廠方法模式
2.1 工廠方法模式的介紹
2.2 工廠方法模式的基本實現
2.3 工廠方法模式的應用場景
三、抽象工廠
3.1 抽象工廠的概念
3.2 抽象工廠的基本結構
3.3 抽象工廠的基本實現
3.4 抽象工廠的應用場景
四、工廠模式的總結
4.1 工廠模式優點和缺點
4.2 工廠模式的適用場景
4.2.1 線程工廠(ThreadFactory)
4.2.2 Bean 工廠(FactoryBean)
工廠模式是一種創建型設計模式,它提供了一種封裝對象實例化過程的方法,使客戶端無需了解具體的實現細節即可獲得所需的對象。通過定義一個用于創建對象的接口(工廠),讓子類決定具體實例化哪一個產品類,從而使得代碼在應對變化時更加靈活且易于擴展。
通俗地講,工廠模式的本質就是用工廠方法,代替 new 操作創建一種實例化對象的方式。
一、簡單工廠模式
1.1 簡單工廠模式的介紹
簡單??模式是?種創建型設計模式,但并不屬于23種設計模式之?,更多的是?種編程習慣。
簡單??模式的核?思想:將產品的創建過程封裝在?個??類中,把創建對象的流程集中在這個??類??。
簡單??模式的角色:
-
抽象產品:描述產品的通??為,通常由一個 Java 接口或一個 Java 抽象類定義。
-
具體產品: 實現抽象產品接?或繼承抽象產品類。
-
??類:負責創建產品,根據傳遞的不同參數創建不同的產品示例。
簡單??類簡化了客戶端操作,客戶端可以調????法來獲取具體產品,??需直接與具體產品類交互,降低了耦合,但是有?個很?的問題就是不夠靈活,如果需要添加新的產品,就需要修改??類的代碼。
簡單工廠的缺點:單??模式只有?個??類,負責創建所有產品,如果要添加新的產品,通常需要修改??類的代碼。
二、工廠方法模式
2.1 工廠方法模式的介紹
???法模式也是?種創建型設計模式:???法模式引?了抽象??和具體??的概念,每個具體??只負責創建?個具體產品,添加新的產品只需要添加新的??類??需修改原來的代碼,這樣就使得產品的?產更加靈活,?持擴展,符合開閉原則。
???法模式分為以下?個??:
-
抽象??:?個接?,包含?個抽象的???法(?于創建產品對象)。
-
具體??:實現抽象??接?,創建具體的產品。
-
抽象產品:定義產品的接?。
-
具體產品:實現抽象產品接?,是??創建的對象。
2.2 工廠方法模式的基本實現
// 抽象產品
interface Shape {void draw();
}// 具體產品 - 圓形
class Circle implements Shape {@Overridepublic void draw() {System.out.println("Circle");}
}// 具體產品 - 正?形
class Square implements Shape {@Overridepublic void draw() {System.out.println("Square");}
}// 抽象??
interface ShapeFactory {Shape createShape();
}// 具體?? - 創建圓形
class CircleFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Circle();}
}
// 具體?? - 創建正?形
class SquareFactory implements ShapeFactory {@Overridepublic Shape createShape() {return new Square();}
}
/