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

适配器

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2013 年 10 月 11 日

CPOL

1分钟阅读

viewsIcon

7827

适配器模式 四人帮定义是“将一个类的接口转换为客户期望的另一个接口。适配器允许由于接口不兼容而无法一起工作的类”。

适配器模式

四人帮定义是“将一个类的接口转换为客户期望的另一个接口。适配器允许由于接口不兼容而无法一起工作的类”。以下是一个使用第三方支付系统的例子,这也使用了工厂设计模式。

一个适配器模式的 VB 例子

' 此代码将在页面代码隐藏层运行
DimaPaymentAsIPayment
DimpaymentTypeAs 字符串 ' 这个值将在其他地方填充

aPayment = PaymentFactory.getPayment(paymentType)
aPayment.takePayment(10.5)

' 支付接口

Public
接口IPayment
   
SubtakePayment(ByVal金额As 双精度浮点型)
End 接口

' PayPal 支付类,实现 IPayment 接口
Public PayPalPayment
   
实现IPayment     

    Public
SubtakePayment(ByVal金额As 双精度浮点型) 实现IPayment.takePayment
       
' 通过 PayPal 商家进行支付的代码
    
End Sub
End

' 信用卡支付类,实现 IPayment 接口
Public CreditCardPayment
   
实现IPayment    

    Public
SubtakePayment(ByVal金额As 双精度浮点型) 实现IPayment.takePayment
      
' 通过信用卡进行支付的代码
   
End Sub
End

' 适配器类,确保第三方代码实现 IPayment
Public ThirdPartyPaymentAdapter
   
继承自ThirdPartyPayment
    
实现IPayment    

    Public
SubtakePayment(ByVal金额As 双精度浮点型) 实现IPayment.takePayment
      
' 这个方法调用实际的第三方代码。
       ' 如果我们不能继承,我们可以在这里或在
       ' 构造函数中实例化对象。
      
MyBase.makeTransasction(金额,)
   
End Sub
End

' 第三方支付类
Public ThirdPartyPayment    

   Public
SubmakeTransasction(ByValamountAs 双精度浮点型, ByValrefundAs 布尔值)
     
' 第三方代码...
  
End Sub
End

' 工厂类,返回具体支付对象
Public PaymentFactory    

   Public
共享 函数getPayment(ByValPaymentTypeAs 字符串) AsIPayment
      
Select 情况PaymentType
          
情况 "信用卡"
              
返回 新建CreditCardPayment
           
情况 "PayPal"
              
返回 新建PayPalPayment
          
情况 Else
              
返回 新建ThirdPartyPaymentAdapter
      
End Select
  
End 函数
End
© . All rights reserved.