在程序里, 全局状态可能都存放在一个全局状态对象里, 例如ASP.NET里面的HttpContext; 或者它们可能是全局的变量, 这些全局变量在程序的任何地方都可以访问....如果我们为A测试设定了全局变量的值, 然后在测试A结束前开始测试B, 这时测试B修改了全局变量的值, 这时测试A就可能会失败, 因为它所期待的全局变量不是这个值....危险信号
全局变量
调用静态字段或调用拥有静态字段的类的静态方法. 但也仅限于该类的静态方法使用了该类的静态字段. ...有这样一个获取当前登录用户权限的类, 它使用的是单例模式:
?
这个是典型的单例模式, 它会保证在程序中只返回一个实例, 这里就不多介绍了.
下面这个Service会调用上面这个Auth类:
?...在ASP.NET Core 项目的Startup类里, 这样写就可以保证每次请求IAuth的时候只会得到同一个对象实例:
?
现在这个"单例"的工作是由IoC容器来负责了.