学习完简单工厂模式,模仿写了个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 { // 业务 } } }