簡單工雖能分離對象創建與使用,但只能創建單一對象。當需要創建一系列相互依賴的對象(如不同數據庫的學員、管理員數據訪問對象)時,抽象工廠模式應運而生。
專案結構清晰劃分:
public abstract class AbstractDALFactory {
public static AbstractDALFactory ChooseFactory() {
string dbType = ConfigurationSettings.AppSettings["DBType"].ToString();
switch(dbType) {
case "Sql": return new SqlDALFactory();
case "Access": return new AccessDALFactory();
}
return null;
}
public abstract IStudentService CreateStudentService();
public abstract IAdminService CreateAdminService();
}
public static class LoginManager {
private static AbstractDALFactory factory = AbstractDALFactory.ChooseFactory();
private static IStudentService studentService = factory.CreateStudentService();
private static IAdminService adminService = factory.CreateAdminService();
public static bool Login(string loginID, string password, string type) { ... }
}
new 操作,降低耦合,利於擴展與維護。