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 {
    			// 业务
    		}
    	}
    }
  • 相关阅读:
    读本地json的方法
    告诉你如何应对HR索要薪资证明!
    函数声明与函数表达式
    原型的动态性
    工作实际需求andjs进阶图书
    表单元素操作,button,点击下载按钮实现-长知识
    grunt注意要点
    重新认识块级元素--DIV
    GO语言学习:变量间赋值
    GO语言学习:单通道
  • 原文地址:https://www.cnblogs.com/hungryforknowedge/p/10032043.html
Copyright © 2011-2022 走看看