你们能够帮助我解决我的问题:
i 设有伙伴关系。 NET网站具有一些基本授权特征(Login/Logoout e.t.c)。 目前有3种主要方法:
- bool Login(string name, string password);
- bool IsLogged();
- string GetUserID();
所有这些方法都“硬编码”为一类。 伐木方法检查数据库,以确定用户。 但是,我当时决定使用XML文档储存用户,这意味着,对用户进行检查的所有逻辑都应当改写。
我提出使用以下“家长”的想法:
- Create interface (e.g. ILoginProvider) that declares those 3 methods that described above
- Implement this interface in any class and write specific logic in Login() method to check XML file or database
- Pass this class to ??? (here is my problem)
我想做一个能够把IloginProvider接口作为论点的班子(如LoginHelper):
class LoginHelper {
private static ILoginProvider provider;
// this method should be called somewhere in Application_Startup event in Global.asax
public static void RegisterLoginProvider(ILoginProvider inst) {
provider = inst;
}
}
其后编写必要方法:
public static bool IsLogged() {
return provider.IsLogged();
}
之后称“全球登记记录仪”方法。 简称表 启动活动:
MyCustomProvider prov = new MyCustomProvider(); // this class implements ILoginProvider interface
LoginHelper.RegisterSecurityProvider(prov);
采用这种逻辑与他人一道改变某些“提供人”的正确方法吗?