我一直都在努力避免使用静态方法。但我也一直试图尽可能地保持我的代码的可读性和简短性。
我有一个代理列表,对于所有代理我应该执行5种不同的验证。
对我来说,这些验证是如此不同,以至于我不想把它们放在一个大的验证课程中。特别是如果验证将被扩展,这个类可能会变得很大。
现在在这种情况下,我可以用这种方式编写验证器类:
Public Class MyValidator1
Public Shared Sub Validate(proxy As ServiceClient, year As Integer)
Dim args = New Arguments()
args.Year= year
Try
Console.WriteLine("Test")
Console.WriteLine("--------------")
Dim result = proxy.GeneratReport(args)
Console.WriteLine("No errors")
Catch ex As Exception
Console.WriteLine(ex.Message)
Finally
Console.WriteLine()
End Try
End Sub
End Class
这是如何实施的:
For Each proxy In _proxies
Console.WriteLine(proxy.Endpoint.Address.Uri.Host)
Console.WriteLine("------------------------")
MyValidator1.Validate(proxy.Value, jaar)
MyValidator2.Validate(proxy.Value, jaar)
MyValidator3.Validate(proxy.Value, jaar)
MyValidator4.Validate(proxy.Value, jaar)
MyValidator5.Validate(proxy.Value, jaar)
Next
我可以将我的方法设为非静态/共享,但这需要我创建每个验证器的实例。
每种选择的利弊是什么。对我来说,使用静态实现阅读更容易。
答案 0 :(得分:0)
1)如果你的方法不依赖于InstanceVariable,你可以将它们设为静态,在你的情况下,因为你希望它们都是静态的,Static Class
可能是你感兴趣的。
2)如果你的方法在逻辑上没有更好的分组以便将它们分开,但是如果你的方法只是关于你的类增长并且变得不那么可管理,你可以考虑考虑部分类。