设计模式之简单工厂模式
学习完简单工厂模式,模仿写了个demo,加深记忆。原博地址:https://www.cnblogs.com/java-my-life/
public class DemoWithoutModel { public static void main(String[] args) { String loginType = "password"; String username = "admin"; String password = "123456"; if ("domain".equals(loginType)) { DomainLogin login = new DomainLogin(); boolean bool = login.login(username, password); if (bool) { // 业务 } else { // 业务 } } else if ("password".equals(loginType)) { PasswordLogin login = new PasswordLogin(); boolean bool = login.login(username, password); if (bool) { // 业务 } else { // 业务 } } else { throw new RuntimeException("no such login type"); } } }
相信只要有些经验的老哥们,都写过不少这样的代码,心里感觉别扭,又不知道如何改进。简单工厂模式帮助您。
定义接口:
public interface Login {
boolean login(String username, String password);
}
两个实现类:
public class DomainLogin implements Login {
@Override
public boolean login(String username, String password) {
System.out.println("domain login");
return true;
}
}
public class PasswordLogin implements Login {
@Override
public boolean login(String username, String password) {
System.out.println("password login");
return true;
}
}
工厂类:
public class LoginManager {
public static Login factory(String loginType) {
if ("domain".equals(loginType)) {
return new DomainLogin();
} else if ("password".equals(loginType)) {
return new PasswordLogin();
} else {
throw new RuntimeException("no such login type");
}
}
}
测试类:
public class Demo {
public static void main(String[] args) {
// simple factory method
String loginType = "password";
String username = "admin";
String password = "123456";
Login login = LoginManager.factory(loginType);
boolean bool = login.login(username, password);
if (bool) {
// 业务
} else {
// 业务
}
}
}

浙公网安备 33010602011771号