惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
I
InfoQ
H
Help Net Security
GbyAI
GbyAI
博客园 - 叶小钗
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
爱范儿
爱范儿
Y
Y Combinator Blog
L
LangChain Blog
腾讯CDC
酷 壳 – CoolShell
酷 壳 – CoolShell
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
F
Fortinet All Blogs
G
Google Developers Blog
Apple Machine Learning Research
Apple Machine Learning Research
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
博客园 - Franky
D
Docker
Jina AI
Jina AI
罗磊的独立博客

博客园 - 蓝色游骑兵

利用JavaScript实现简单的下拉菜单 大话权限设计 安全系统的设计 ASP.NET 安全问题的思索 自定义验证器的开发 WinForm 开发 MSCRM 的感受 测试驱动开发 异常使用的思考 读UML精髓第三版之感受 数据完整性的检查 Acegi安全框架 安全服务的设计思考 ContextAttribute与ContextBoundObject应用开发3 ContextAttribute与ContextBoundObject应用开发2 ContextAttribute与ContextBoundObject应用开发 邮件发送组件的开发完成 验证组件的设计和使用 如何从新开发的程序中提炼服务
使用静态构造函数与使用单件
蓝色游骑兵 · 2008-06-03 · via 博客园 - 蓝色游骑兵

今天需要编写一个AuthenticationProviderFactory的工厂类,需要向外部提供注册、注消和获取IAuthenticationProvider的服务,并且在构造时能够将配置中的信息获取并设置一些相应的值。
这里我想了很长时间是使用单件还是使用静态方式来提供这三个功能。虽然使用单件与使用静态在原则上很好区分(如果将这个类是工具集则使用静态否,如果表示的是一种概念使用单件),但具体做起来就不那么好做了。
所以我就想了一下使用那一种方式使用和维护起来更加方便,使用静态方式使用起来肯定要方便很多,但先需要获取配置信息所以就必须编写一个静态构造器来设置配置的值。而如果使用静态构造来初始化则当配置信息出错时就会引发调用失败,并且这种失败不会显示出明确的信息,同时还会使用整个应用程序崩溃。而如果使用单件则当调用这个单件的过程中调用初始化配置,如果配置错误则会在这里引发,如果不调用本方法则程序不会出现问题,并且其它部分还可以正常运行这对程序的容错性有很大帮助。
所以最后我还是决定采用单件来处理这个问题,并且也让我想到在具体的使用过程中

尽量不要使用静态构造器,如果必须则必须要保证静态构造器不会产生异常才行啊。