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 {
    			// 业务
    		}
    	}
    }
  • 相关阅读:
    [JSOI2007]文本生成器 --- AC自动机 + DP
    [POI2000]病毒 --- AC自动机
    [HNOI2011]数学作业 --- 矩阵优化
    [BZOJ4245][ONTAK2015]OR-XOR(贪心)
    [BZOJ4247]挂饰(DP)
    [BZOJ4032][HEOI2015]最短不公共子串(Trie+DP)
    [BZOJ4028][HEOI2015]公约数数列(分块)
    [BZOJ4027][HEOI2015]兔子与樱花(贪心)
    [BZOJ4004][JLOI2015]装备购买(贪心+线性基)
    [HDU5029]Relief grain(树链剖分+线段树)
  • 原文地址:https://www.cnblogs.com/hungryforknowedge/p/10032043.html
Copyright © 2011-2022 走看看