工廠方法模式應該是工廠模式家族中用的最多的模式,一般專案中存在的最多的就是這個模式。
工廠方法模式是簡單工廠的進一步深化,在工廠方法模式中,我們不再提供乙個統一的工廠類來建立所有的物件,而是針對不同的物件提供不同的工廠。也就是說每個對物件都有乙個與之對應的工廠。
抽象工廠(abstract factory)角色:是工廠方法模式的核心,與應用程式無關。任何在模式中建立的物件的工廠類必須實現這個介面。
具體工廠(concrete factory)角色:這是實現抽象工廠介面的具體工廠類,包含與應用程式密切相關的邏輯,並且受到應用程式呼叫以建立某一種產品物件。
抽象產品(abstract product)角色:工廠方法模式所建立物件的超型別,也就是產品物件的共同父類或者共同擁有的介面。
具體產品(concrete product)角色:這個角色實現了抽象產品角色所定義的介面。某具體產品有專門的具體工廠建立,他們之間往往一一對應。
建立乙個可以繪製不同形狀的繪圖工具,可以繪製圓形,正方形,三角形,每個圖形都會有乙個draw()方法用於繪圖.
(1)建立 shape 介面
public inteface shape()
(2)建立實現該介面的具體圖形類圓形
public
class
circle
implements
shape
@override
public
void
draw()
}
長方形
public
class
rectangle
implements
shape
@override
public
void
draw()
}
正方形
public
class
square
implements
shape
@override
public
void
draw()
}
(3)工廠介面
public
inte***ce
factory()
(4)相關工廠類
圓形工廠類
public
class
circlefactory
implements
factory
}
長方形工廠類
public
class
rectanglefactory
implements
factory
}
正方形工廠類
public
class
squarefactory
implements
factory
}
(5)測試:
public
class
test
}
輸出結果:
circle
draw circle
設計模式(二) 工廠模式(工廠方法)
之前學習了簡單工廠我們明白了,簡單工廠雖然有一定的好處,但是還不夠好,它無法滿足開閉原則,我們在如果新增產品的話,就需要更改已有的工廠類。工廠方法模式就是在簡單工廠的基礎上,滿足開閉原則,讓我們只需要新增類就好,不用去更改已有 展示下之前的database mysql sqlserver三個類。pa...
設計模式(二) 工廠方法模式
工廠方法 factory method 模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品...
設計模式二 工廠方法模式
在眾多設計模式裡面使用最多的乙個就是工廠方法模式,下面我們先來看乙個例子 抽象產品 inte ce iproduct 具體產品 class product implements iproduct 抽象工廠 inte ce ifactory 具體工廠 class factory implements ...