简单工厂模式的个人简单理解:如果同一个功能有的不同实现路径,则将这些实现路径封装到“工厂”中,用户需要哪个实现路径,则告诉工厂,工厂接收到信息后,返回给用户具体的实现路径,用户再拿着具体的实现路径执行逻辑。
/**
* author:lcy
* since 2021/6/24 17:29
* 简单工厂模式
*/
public interface Login {
public boolean verify(String username,String password);
}
/**
* author:lcy
* since 2021/6/24 17:31
* 域登录逻辑
*/
public class DomainLogin implements Login{
@Override
public boolean verify(String username, String password) {
/**
* 域登录的业务逻辑
*/
return true;
}
}
/**
* author:lcy
* since 2021/6/24 17:35
* 账号密码登录逻辑
*/
public class PassWordLogin implements Login{
@Override
public boolean verify(String username, String password) {
/**
* 账号密码登录逻辑
*/
return true;
}
}
这些只是具体的实现方式,我们还需要一个“工厂”将实现方式封装起来
/**
* author:lcy
* since 2021/6/24 17:36
* 工厂,提供静态方法接收类型参数,返回类型参数对应的实现方法
*/
public class FactoryManager {
public static Login getFactory(String type) throws Exception {
if("账号密码登录".equals(type)){
return new PassWordLogin();
}else if("域登录".equals(type)){
return new DomainLogin();
}else {
throw new Exception("不存在的登录模式!!!");
}
}
}
然后就可以在主函数使用这个工厂实现具体逻辑了
/**
* author:lcy
* since 2021/6/24 17:39
* 主函数
*/
public class Main {
public static void main(String[] args) throws Exception {
/*假如使用了账号密码登录的工厂。。。。*/
Login passwordLogin = FactoryManager.getFactory("账号密码登录");
boolean verify = passwordLogin.verify("username", "password");
if(verify){
//执行一些逻辑。。。。
}
/*假如使用了域登录的工厂。。。。*/
Login domainLogin = FactoryManager.getFactory("域登录");
boolean verify1 = domainLogin.verify("username", "password");
if(verify1){
//执行一些逻辑。。。。
}
}
}