我读了很多关于“干净代码”和“设计模式”的内容,他们说要避免代码中的“切换/选择大小写”。他们说“使用多态性”或“策略模式”。
如何使用这些概念避免字符串值上的“选择案例”(VB.Net)?
select case value
case "abc"
method1()
case "def"
method2()
end select
即使我建立了一个根据字符串的值返回对象的工厂,“select case”语句仍然......
我读了很多关于“干净代码”和“设计模式”的内容,他们说要避免代码中的“切换/选择大小写”。他们说“使用多态性”或“策略模式”。
如何使用这些概念避免字符串值上的“选择案例”(VB.Net)?
select case value
case "abc"
method1()
case "def"
method2()
end select
即使我建立了一个根据字符串的值返回对象的工厂,“select case”语句仍然......
如果所有方法都采用相同数量和类型的参数以及相同的返回类型,您可以简单地将它们添加到字典中,如下所示:
Dim methods = New Dictionary(Of String, Action)
methods.Add("abc", AddressOf method1)
methods.Add("def", AddressOf method2)
然后像这样调用它
methods(value)()
或者,对于更面向对象的方法,为工厂创建一个接口:
Interface FooFactory
Function CreateFoo() As Foo
End Interface
再次将它们添加到字典中:
Dim factories = New Dictionary(Of String, FooFactory)
factories.Add("abc", New FooFactory1)
factories.Add("def", New FooFactory2)
然后像这样调用它
Dim foo = factories(value).CreateFoo()