适配器





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