日韩三级国产精品-日韩三级黄频-日韩三级黄色片1-日韩三级片网页版-日韩三级片网址入口-日韩三级在线播放-日韩三级在线导航-日韩三级中文-日韩三区四区-日韩色吧AV

當前位置: 首頁 > 產(chǎn)品大全 > 工廠方法模式 靈活構(gòu)建對象的利器

工廠方法模式 靈活構(gòu)建對象的利器

工廠方法模式 靈活構(gòu)建對象的利器

1. 工廠方法模式簡介

工廠方法模式(Factory Method Pattern)是一種創(chuàng)建型設(shè)計模式,它提供了一種將對象的實例化過程延遲到子類中去實現(xiàn)的方式。簡單來說,它定義了一個創(chuàng)建對象的接口,但讓子類決定要實例化哪一個類。這使得系統(tǒng)在不修改已有代碼的情況下,能夠引入新的產(chǎn)品類型,從而提高了系統(tǒng)的可擴展性和靈活性。

該模式的核心思想是將對象的創(chuàng)建與使用分離,客戶端只需要知道所需產(chǎn)品對應(yīng)的工廠,而無需關(guān)心具體的創(chuàng)建細節(jié)。這符合“開閉原則”,即對擴展開放,對修改關(guān)閉。

2. 模式結(jié)構(gòu)

工廠方法模式主要包含以下角色:

  • 抽象產(chǎn)品(Product):定義了產(chǎn)品的接口,是工廠方法創(chuàng)建的所有對象的超類。
  • 具體產(chǎn)品(Concrete Product):實現(xiàn)了抽象產(chǎn)品接口的具體類。
  • 抽象工廠(Creator):聲明了工廠方法,該方法返回一個抽象產(chǎn)品類型的對象。它可能還包含一些依賴于產(chǎn)品的核心業(yè)務(wù)邏輯。
  • 具體工廠(Concrete Creator):重寫了工廠方法,返回一個具體產(chǎn)品的實例。

它們之間的關(guān)系可以概括為:具體工廠創(chuàng)建具體產(chǎn)品,但返回給客戶端的是抽象產(chǎn)品類型

3. 示例:生產(chǎn)不同交通工具

假設(shè)我們需要一個系統(tǒng)來生產(chǎn)不同的交通工具,如汽車和自行車。使用工廠方法模式可以實現(xiàn)如下:

`java // 1. 抽象產(chǎn)品 interface Vehicle { void drive(); }

// 2. 具體產(chǎn)品
class Car implements Vehicle {
@Override
public void drive() {
System.out.println("Driving a car...");
}
}

class Bicycle implements Vehicle {
@Override
public void drive() {
System.out.println("Riding a bicycle...");
}
}

// 3. 抽象工廠
abstract class VehicleFactory {
// 工廠方法
public abstract Vehicle createVehicle();

public void deliverVehicle() {
Vehicle vehicle = createVehicle();
System.out.println("Preparing delivery...");
vehicle.drive();
}
}

// 4. 具體工廠
class CarFactory extends VehicleFactory {
@Override
public Vehicle createVehicle() {
return new Car();
}
}

class BicycleFactory extends VehicleFactory {
@Override
public Vehicle createVehicle() {
return new Bicycle();
}
}

// 5. 客戶端代碼
public class Client {
public static void main(String[] args) {
VehicleFactory carFactory = new CarFactory();
carFactory.deliverVehicle();

VehicleFactory bikeFactory = new BicycleFactory();
bikeFactory.deliverVehicle();
}
}
`

運行結(jié)果:
`
Preparing delivery...
Driving a car...
Preparing delivery...
Riding a bicycle...
`

在這個例子中,VehicleFactorydeliverVehicle() 方法是一個模板方法,它調(diào)用了抽象的 createVehicle() 工廠方法。具體的創(chuàng)建邏輯由子類 CarFactoryBicycleFactory 實現(xiàn)。客戶端只需與抽象工廠和抽象產(chǎn)品交互,完全與具體類解耦。

4. 優(yōu)點與適用場景

優(yōu)點:
- 良好的封裝性:客戶端無需知道所創(chuàng)建的具體產(chǎn)品類名,只需要知道對應(yīng)的工廠即可。
- 優(yōu)秀的可擴展性:如果需要增加新的產(chǎn)品,只需添加一個新的具體產(chǎn)品類和一個對應(yīng)的具體工廠類,無需修改現(xiàn)有代碼。
- 符合開閉原則:對擴展開放,對修改關(guān)閉。
- 解耦客戶端與具體產(chǎn)品:客戶端只依賴于抽象,降低了系統(tǒng)的耦合度。

適用場景:
- 當一個類無法預(yù)知它必須創(chuàng)建的對象的類時。
- 當一個類希望由其子類來指定它所創(chuàng)建的對象時。
- 當需要將對象的創(chuàng)建與使用分離,使系統(tǒng)更符合單一職責原則時。
- 在框架設(shè)計中,經(jīng)常使用工廠方法模式讓用戶通過繼承來擴展框架的功能。

5. 工廠方法模式與簡單工廠模式

初學(xué)者容易混淆工廠方法模式和簡單工廠模式。它們的區(qū)別在于:

  • 簡單工廠模式:由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定創(chuàng)建哪一種產(chǎn)品類的實例。它最大的缺點是工廠類職責過重,且增加新產(chǎn)品需要修改工廠類邏輯,違反了開閉原則。
  • 工廠方法模式:將具體產(chǎn)品的創(chuàng)建延遲到子類中。核心工廠類不再負責所有產(chǎn)品的創(chuàng)建,而是將創(chuàng)建工作交給子類去做。自己則成為一個抽象工廠角色,僅負責給出具體工廠子類必須實現(xiàn)的接口。

可以說,工廠方法模式是簡單工廠模式的進一步抽象和推廣

6.

工廠方法模式通過引入抽象工廠和具體工廠的層次結(jié)構(gòu),將對象的實例化延遲到子類,提供了一種靈活的擴展機制。它是面向?qū)ο笤O(shè)計中“依賴抽象,而非具體”這一原則的完美體現(xiàn)。在需要管理系統(tǒng)復(fù)雜性、提高代碼可維護性和可擴展性的場景下,工廠方法模式是一個極具價值的工具。掌握它,能幫助開發(fā)者構(gòu)建出更加健壯和靈活的軟件架構(gòu)。

如若轉(zhuǎn)載,請注明出處:http://www.boyihao.cn/product/65.html

更新時間:2026-08-18 22:20:42

產(chǎn)品列表

PRODUCT

主站蜘蛛池模板: 亚洲系列在线观看 | 综合国产一区二区 | 免费视频h | 性欧美一区二区 | 91色花堂 | 欧美性爱乱码视频 | 亚洲色情天堂 | 午夜福利视频 | 在线不卡二区 | 美女网站视频很色 | 日本免费网站 | 日本女同舌吻 | 抖阴操操操 | 一级黄色片免费 | 豆花综合网| 成人三级网站在 | 欧美在线观看一区 | 欧美区在线观看 | 操逼福利社| 国产浮力第一页 | 91精品欧美成人 | 日韩欧美瑟瑟影院 | 极品人妖 | 加勒比久草蜜桃 | 国产a精彩| 欧美日韩一级免费 | 在线观看国产在线 | 欧美人妖王 | gay片免费观看 | 日韩伦理片影院 | 欧美成人视频网站 | 优酸乳成人无码片 | 国产a级毛片 | 精品成人网 | 91碰在线观看| 国产激情免费播放 | 人妻中文字幕在线 | 国产在线播放免费 | 福利小视频国产 | 国产精品精品国 | 日韩操逼内射 |