設計模式之Factory 方法(FACTORY METHOD))(二)

來源:互聯網
上載者:User
設計 (接上頁)衍生類別為這個選拔基類(Seeding)分別建立一個執行個體來調用這些方法。我們現在建立這兩個具體的選拔子類:StraightSeeding 類CircleSeeding類。PrelimEvent類將返回CircleSeeding類的執行個體,TimedFinalEvent類則返回StraightSeeding類執行個體。

結構如下:





通過整個事件層次,可以看到PrelimEvent類、TimedFinalEvent類都包含getSeeding方法,PrelimEvent類將返回CircleSeeding類的執行個體,TimedFinalEvent類則返回StraightSeeding類執行個體。在這個簡單的例子當中我們並沒有指出真正的工廠(Factory),然而,執行個體化哪一個Event類決定了哪一個Seeding類將被執行個體化。

雖然它看起來像是在兩個類之間存在一對一相應的通訊。 但,這不是必需的。可以有許多不同類型的Events類但他們只使用少一部分Seeding類。



Swimmer 類

Swimmer類包含一些遊泳運動員的具體資訊和在選拔之後修改運動員的組以及泳道的方法。Event類在資料庫(在這個例子中為文字檔)讀取運動員資訊。當調用Event類的getSeeding方法時將這個運動員的集合傳遞到Seeding類。



Events 類

我們已經定義了一個抽象基類,在實際的應用當中,我們只是使用它來讀取遊泳運動員的資料資訊(在這個例子中為文字檔)。



Prelimevent類返回CircleSeeding執行個體



Public Class Prelimevent

Inherits Events

Dim sd As Seeding

Public Overrides Function getSeeding() As Seeding

Return New CircleSeeding(swmmers, numLanes)

End Function



Public Overrides Function isFinal() As Boolean

isFinal = False

End Function



Public Overrides Function isPrelim() As Boolean

isPrelim = True

End Function



Public Overrides Function isTimedFinal() As Boolean

isTimedFinal = False

End Function



Public Sub New(ByVal Filename As String, ByVal lanes As Integer)

MyBase.New(Filename, lanes)

numLanes = lanes

End Sub

End Class



TimedFinalEvent類返回StraightSeeding執行個體



public Class TimedFinalEvent

Inherits Events



Public Sub New(ByVal Filename As String, ByVal lanes As Integer)

MyBase.New(Filename, lanes)

End Sub

'------

Public Overrides Function getSeeding() As Seeding

Dim sd As Seeding

'create seeding and execute it

sd = New StraightSeeding(swmmers, numLanes)

sd.seed()

getSeeding = sd

End Function

'------

Public Overrides Function isFinal() As Boolean

isFinal = False

End Function

'------

Public Overrides Function isPrelim() As Boolean

isPrelim = False

End Function

'------

Public Overrides Function isTimedFinal() As Boolean

isTimedFinal = True

End Function



End Class




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。