• 设计模式之简单工厂模式


      学习完简单工厂模式,模仿写了个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 {
    			// 业务
    		}
    	}
    }
  • 相关阅读:
    [LeetCode] 117. Populating Next Right Pointers in Each Node II
    [LeetCode] 229. Majority Element II
    [LeetCode] 876. Middle of the Linked List
    HttpClient 使用案例
    github 拷贝项目到本地
    tomcat下文件路径
    同一个tomcat 两个项目 互相访问接口方法
    Mysq 列中存储json格式根据key取value
    mysql 函数和存储过程的区别
    mysql触发器
  • 原文地址:https://www.cnblogs.com/hungryforknowedge/p/10032043.html
Copyright © 2020-2023  润新知