zoukankan      html  css  js  c++  java
  • 设计模式之简单工厂模式

      学习完简单工厂模式,模仿写了个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 {
    			// 业务
    		}
    	}
    }
  • 相关阅读:
    pycharm安装破解
    flask动态生成csv
    使用django开发restful接口
    python matplotlib显示中文和负数符号
    locust性能测试02—检查点
    locust性能测试01—初体验
    Mac中配置jmeter+grafana监控
    CF731E Funny Game
    CF197A Plate Game
    luoguP1823 [COI2007] Patrik 音乐会的等待
  • 原文地址:https://www.cnblogs.com/hungryforknowedge/p/10032043.html
Copyright © 2011-2022 走看看