設計模式 6 工廠模式Factory

2021-07-05 18:21:09 字數 2638 閱讀 9773

工廠模式有三種:簡單工廠模式,抽象工廠模式和工廠方法模式。

1、簡單工廠模式

以圖形為例:

//圖形介面

inte***ce

shape()

//圓形

class

circle

implements

shape

}//矩形

class

rectangle

implements

shape

}//圖形工廠

class

shapefactory

} public

class

shapedemo

public

static

void main(string args)

}

2、抽象工廠模式

抽象工廠模式中可以包括多個抽象產品類,每個抽象產品類可以產生出多個具體產品類,乙個抽象工廠用於定義所需產品的組合形式,抽象工廠派生具體工廠類,這些具體工廠類就是簡單工廠模式中的工廠類,具體工廠類負責具體產品例項的建立:

//軟體**類 

class

skin

public

void setskinfactory(skinfactory factory)

public

void showskin()

}//軟體style

inte***ce

style()

//ios style

class

iosstyle

implements

style

}//android style

class

androidstyle

implements

style

}//軟體color

inte***ce

color()

//ios color

class

ioscolor

implements

color

}//android color

class

androidcolor

implements

color

}//抽象**工廠

inte***ce

skinfactory

//ios**工廠

class

iosskinfactory

implements

skinfactory

public color getcolor()

}//android**工廠

class

androidskinfactory

implements

skinfactory

public color getcolor()

}public

class

skindemo

}

3、工廠方法模式

工廠方法中也只包含乙個抽象產品類,抽象產品類可以派生出多個具體產品類。工廠方法定義乙個用於建立產品的介面,讓子類決定例項化哪乙個類,使得類的例項化延遲到子類。

以汽車製造為例:

//汽車介面

inte***ce

icar

//賓士車

class

benzcar

implements

icar

}//寶馬車

class

bmwcar

implements

icar

}//抽象汽車工廠

abstract

class

ca***ctory

//賓士車工廠

class

benzca***ctory

extends

ca***ctory

}//寶馬車工廠

class

bmwca***ctory

extends

ca***ctory

}public

class

factorymethoddemo

}

工廠模式中,重要的是工廠類,而不是產品類。產品類可以是多種形式,多層繼承或者是單個類都是可以的。但要明確的,工廠模式的介面只會返回一種型別的例項,這是在設計產品類的時候需要注意的,最好是有父類或者共同實現的介面。

使用工廠模式,返回的例項一定是工廠建立的,而不是從其他物件中獲取的。工廠模式返回的例項可以不是新建立的,返回由工廠建立好的例項也是可以的。

三種工廠模式的區別:

簡單工廠 : 用來生產同一等級結構中的任意產品,對於增加新的產品,無能為力。

工廠方法 :用來生產同一等級結構中的固定產品,支援增加任意產品。

抽象工廠 :用來生產不同產品族(由不同產品組合成的一套產品)的全部產品,對於增加新的產品,無能為力;支援增加產品族。

Java設計模式 抽象工廠模式(factory)

目錄目的 應用例項 提供乙個建立一系列相關或相互依賴物件的介面,而無需指定它們具體的類。工廠模式是最常用的設計模式之一。這種型別的設計模式輸出建立型模式,提供了一種建立物件的最佳方式。在工廠模式中建立物件是通過使用乙個共同 的介面來指向新建立的物件。乙個框架或者系統要由多個子工具系列的乙個工具來配置...

《JavaScirpt設計模式》(6) 工廠模式

1 簡介 乙個類或物件往往會包含別的物件。在建立這種物件時,你可能習慣於使用常規方法,即用new關鍵字和類建構函式。問題在於這會導致兩個類之間產生依賴性。比如 現在有幾個pc生廠商,生產台式電腦,每個台式電腦的組成部分都是cpu hardisk montherboard。生產商從各個硬體商收購硬體,...

《JavaScirpt設計模式》(6) 工廠模式

1 簡介 乙個類或物件往往會包含別的物件。在建立這種物件時,你可能習慣於使用常規方法,即用new關鍵字和類建構函式。問題在於這會導致兩個類之間產生依賴性。比如 現在有幾個pc生廠商,生產台式電腦,每個台式電腦的組成部分都是cpu hardisk montherboard。生產商從各個硬體商收購硬體,...