分类

  • 软件天地

  • 设计模式之工厂方法 FACTORY METHOD(二)‖
    两个具体的选拔子类:Stra
    CircleSeeding类的实例,T
    (Seeding)分别建立一个实例
    ightSeeding 类CircleSeeding
    imedFinalEvent类则返回Straig
    来调用这些方法。我们现在建立这
    类。PrelimEvent类将返回
    htSeeding类实例。

      通过整个事件层次,可
    ,PrelimEvent类将返回Cir
    类实例。在这个简单的例子
    个Event类决定了哪一个See
    以看到PrelimEvent类、TimedFi
    cleSeeding类的实例,TimedFin
    当中我们并没有指出真正的工厂
    ding类将被实例化。
    nalEvent类都包含getSeeding方法
    alEvent类则返回StraightSeeding
    (Factory),然而,实例化哪一


      虽然它看起来像是在两
    多不同类型的Events类但他
    个类之间存在一对一相应的通信
    们只使用少一部分Seeding类。
    。 但,这不是必需的。可以有许


      Swimmer 类

      Swimmer类包含一些游泳运动员的具
    。Event类在数据库(在这个例子中为文
    getSeeding方法时将这个运动员的集合传
    体信息和在选拔之后修改运动员的组以及泳道的方法
    本文件)读取运动员信息。当调用Event类的
    递到Seeding类。

      Events 类

      我们已经定义了一个抽象基类,在实
    数据信息(在这个例子中为文本文件)。
    际的应用当中,我们只是使用它来读取游泳运动员的


      Prelimevent类返回CircleSeeding实例                    

      Public Class Prelimevent                              

        Inherits Events                                            

          Dim sd As Seeding                                    

        Public Overrides
    Function getSeeding() As Se
    eding

          Return New CircleSeeding
    (swmmers, numLanes)

        End Function                                                  

        Public Overrides
    Function isFinal() As Boole
    an

          isFinal = False                                        

        End Function                                                  

        Public Overrides
    Function isPrelim() As Bool
    ean

          isPrelim = True                                        

        End Function                                                  

        Public Overrides
    Function isTimedFinal() As
    Boolean

          isTimedFinal = False                              

        End Function                                                  

        Public Sub New(ByVal Filenam
    e 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 Filenam
    e As String, ByVal lanes As Integer)

          MyBase.New(Filename, lanes)                

        End Sub                                                            

        '------                                                          

        Public Overrides
    Function getSeeding() As Se
    eding

          Dim sd As Seeding                                    

          'create seeding and execute it          

          sd = New Str
    aightSeeding(swmmers, numLan
    es)

          sd.seed()                                                    

          getSeeding = sd                                        

        End Function                                                  

        '------                                                          

        Public Overrides Function is
    Final() As Boolean

          isFinal = False                                        

        End Function                                                  

        '------                                                            

        Public Overrides
    Function isPrelim() As Bool
    ean

          isPrelim = False                                      

        End Function                                                  

        '------                                                            

        Public Overrides
    Function isTimedFinal() As
    Boolean

          isTimedFinal = True                                

        End Function                                                  

      End Class                                                            

    上一页 下一页




    map