抽象工厂模式的LotusScript实现

60min 2003-12-23 02:33:25
抽象工厂模式本是最简单的设计模式,之所以写下该示例代码的原委见这里

http://www.clpclub.com/Club/bbs.nsf/0/959F5DCEF4BE71BF48256DE700289835?open&MODE=OPEN~&START=1~&Count=10~&test=yes



%Rem
LS唯一的缺点就是其没有接口和抽象类的语法,但这并不妨碍我们
实现抽象工厂,所谓java有接口和抽象类的语法,也就是其编译器能够进行一些检查,防止程序员作了一些接口和抽象类不允许做的事情。
那么LS中,程序员警觉性提高写就行了,你自己主动完成编译器的检查就行了。


%end rem

'作者:shizy
'mail:shizy@mdcl.com.cn
'测试该模式

Class Test
Public Sub main
Dim factory As Factory
Set factory = New FactoryA
'Set factory = New FactoryB
Dim client As New client
Call client.main(factory)
End Sub
End Class
'使用工厂的产品的客户端
Class Client
Public Sub main(factory As Factory)
Dim product1 As Product1
Dim product2 As Product2
Dim product3 As Product3
Set product1=factory.makeProduct1
Set product2=factory.makeProduct2
Set product3=factory.makeProduct3
End Sub
End Class
'抽象工厂
Class Factory
Public Function makeProduct1 As Product1

End Function
Public Function makeProduct2 As Product2

End Function
Public Function makeProduct3 As Product3

End Function
End Class
'具体工厂A
Class FactoryA As Factory
Public Function makeProduct1 As Product1
Set makeProduct1=New Product1a
End Function
Public Function makeProduct2 As Product2
Set makeProduct2=New Product2a
End Function
Public Function makeProduct3 As Product3
Set makeProduct3=New Product3a
End Function
End Class
'具体工厂B
Class FactoryB As Factory
Public Function makeProduct1 As Product1
Set makeProduct1=New Product1b
End Function
Public Function makeProduct2 As Product2
Set makeProduct2=New Product2b
End Function
Public Function makeProduct3 As Product3
Set makeProduct3=New Product3b
End Function
End Class

''''''''''''''''''一系列抽象产品''''''''''''''''''''''''''''''''''''''''
'抽象产品1
Class Product1

End Class
'抽象产品2
Class Product2

End Class
'抽象产品3
Class Product3

End Class


''''''''''''''''''A系列具体产品''''''''''''''''''''''''''''''''''''''''
'具体产品1
Class Product1a As Product1

End Class
'具体产品2
Class Product2a As Product2

End Class
'具体产品3
Class Product3a As Product3

End Class

''''''''''''''''''B系列具体产品''''''''''''''''''''''''''''''''''''''''
'具体产品1
Class Product1b As Product1

End Class
'具体产品2
Class Product2b As Product2

End Class
'具体产品3
Class Product3b As Product3

End Class


...全文
19 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

535

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 Exchange Server
社区管理员
  • 消息协作社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧