65.9K
CodeProject 正在变化。 阅读更多。
Home

抽象工厂

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

2分钟阅读

viewsIcon

5653

抽象工厂 :“四人帮” 对此设计模式的定义是:“提供一个创建相关或依赖对象族的接口”

抽象工厂

该设计模式的“四人帮”定义是:“提供一个创建相关或依赖对象系列的接口,而无需指定它们的具体类”。

抽象工厂设计模式的 VB 示例

' 此代码可以在后台页面级别运行
Dim
aCarFactoryAsCarFactory (汽车工厂)

' 理想情况下,我们会使用工厂设计模式
' 但为了简单起见,我省略了这一点
If一个变量 ="福特" 那么
    
aCarFactory =新建FordCarFactory (福特汽车工厂)
Else
    
aCarFactory =新建VauxhallCarFactory (沃克斯豪尔汽车工厂)
End If

' 构建 2 辆家庭车
DimaFamilyCar1AsICar = aCarFactory.CreateFamilyCar (创建家庭车)
DimaFamilyCar2AsICar = aCarFactory.CreateFamilyCar (创建家庭车)

' 构建一辆城市车
DimaCityCarAsICar = aCarFactory.CreateCityCar (创建城市车)

' 基类 Car Factory (汽车工厂)
Public MustInherit CarFactory (汽车工厂)
   
Public MustOverride (必须重写) 函数CreateFamilyCar() (创建家庭车)AsICar (接口汽车)

    Public (公共) MustOverride (必须重写) 函数CreateCityCar() (创建城市车)AsICar (接口汽车)
End

' 具体的福特汽车工厂
Public FordCarFactory (福特汽车工厂)
   
继承自CarFactory (汽车工厂)

    Public (公共) Overrides 函数CreateCityCar() (创建城市车)AsICar (接口汽车)
        
返回 新建FordCityCar (福特城市车)
   
End 函数

    Public (公共) Overrides 函数CreateFamilyCar() (创建家庭车)AsICar (接口汽车)
        
返回 新建FordFamilyCar (福特家庭车)
   
End 函数
End


' 具体的沃克斯豪尔汽车工厂
Public VauxhallCarFactory (沃克斯豪尔汽车工厂)
   
继承自CarFactory (汽车工厂)

    Public (公共) Overrides 函数CreateCityCar() (创建城市车)AsICar (接口汽车)
       
返回 新建VauxhallCityCar (沃克斯豪尔城市车)
    
End 函数

    Public (公共) Overrides 函数CreateFamilyCar() (创建家庭车)AsICar (接口汽车)
       
返回 新建VauxhallFamilyCar (沃克斯豪尔家庭车)
   
End 函数
End


' 汽车接口,所有汽车都必须实现这些方法
Public 接口ICar (接口汽车)
 
   
SubDrive() (驾驶)    

    Function (函数)
Desc() (描述)As 字符串

End
接口

' 具体的福特家庭车
Public FordFamilyCar (福特家庭车)
   
实现ICar (接口汽车)

    Public (公共) SubDrive() (驾驶)实现ICar.Drive (接口汽车.驾驶)
      
' 驾驶汽车
   
End Sub

    Public (公共) 函数Desc() (描述)As 字符串 实现ICar.Desc (接口汽车.描述)
      
返回 "Ford Family Car seats 8" (福特家庭车可容纳 8 人)
   
End 函数
End


' 具体的福特城市车
Public FordCityCar (福特城市车)
   
实现ICar (接口汽车)

    Public (公共) SubDrive() (驾驶)实现ICar.Drive (接口汽车.驾驶)
      
' 驾驶汽车
   
End Sub

    Public (公共) 函数Desc() (描述)As 字符串 实现ICar.Desc (接口汽车.描述)
      
返回 "Ford Ciy Car seats 2" (福特城市车可容纳 2 人)
   
End 函数
End


' 具体的沃克斯豪尔城市车
Public VauxhallCityCar (沃克斯豪尔城市车)
   
实现ICar (接口汽车)

    Public (公共) SubDrive() (驾驶)实现ICar.Drive (接口汽车.驾驶)
      
' 驾驶汽车
   
End Sub

    Public (公共) 函数Desc() (描述)As 字符串 实现ICar.Desc (接口汽车.描述)
       
返回 "Vauxhall Ciy Car seats 4" (沃克斯豪尔城市车可容纳 4 人)
   
End 函数
End


' 具体的沃克斯豪尔家庭车
Public VauxhallFamilyCar (沃克斯豪尔家庭车)
   
实现ICar (接口汽车)

    Public (公共) SubDrive() (驾驶)实现ICar.Drive (接口汽车.驾驶)
       
' 驾驶汽车
   
End Sub

    Public (公共) 函数Desc() (描述)As 字符串 实现ICar.Desc (接口汽车.描述)
       
返回 "Vauxhall Family Car seats 6" (沃克斯豪尔家庭车可容纳 6 人)
   
End 函数
End

外部链接

© . All rights reserved.