前言: 我们首先描述了简单工厂模式:简单工厂模式是一种类创建模式,也称为静态工厂方法模式。简单工厂模式是一个工
我们首先描述了简单工厂模式:简单工厂模式是一种类创建模式,也称为静态工厂方法模式。简单工厂模式是一个工厂对象,它决定创建哪个产品类实例。
在登录功能方面,如果应用系统需要支持多种登录方式,如密码认证和域认证(密码认证通常是对数据库中的用户进行验证,而域认证是对微软域中的用户进行验证)。这样做的自然方法是创建一个适用于各种登录模式的界面,如下图所示:
public interface Login {
//validate logon
public boolean verify(String name , String password);
}
public class DomainLogin implements Login {
@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* Business logic
*/
return true;
}
}
public class PasswordLogin implements Login {
@Override
public boolean verify(String name, String password) {
// TODO Auto-generated method stub
/**
* Business logic
*/
return true;
}
}
我们还需要一个工厂类LoginManager来创建不同的登录对象,并根据调用者的不同需求返回。如果遇到非法请求,则返回运行时异常。
public class LoginManager {
public static Login factory(String type){
if(type.equals("password")){
return new PasswordLogin();
}else if(type.equals("passcode")){
return new DomainLogin();
}else{
/**
* It would be more appropriate to throw a custom exception here
*/
throw new RuntimeException("No login type found");
}
}
}
测试类:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String loginType = "password";
String name = "name";
String password = "password";
Login login = LoginManager.factory(loginType);
boolean bool = login.verify(name, password);
if (bool) {
/**
* Business logic
*/
} else {
/**
* Business logic
*/
}
}
}
如果不使用简单工厂模式,验证登录Servlet代码如下(假设Test是一个Servlet,变量loginType、name、password代表客户端传过来的参数):
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String loginType = "password";
String name = "name";
String password = "password";
//Handling password authentication
if(loginType.equals("password")){
PasswordLogin passwordLogin = new PasswordLogin();
boolean bool = passwordLogin.verify(name, password);
if (bool) {
/**
* Business logic
*/
} else {
/**
* Business logic
*/
}
}
//Processing Domain Authentication
else if(loginType.equals("passcode")){
DomainLogin domainLogin = new DomainLogin();
boolean bool = domainLogin.verify(name, password);
if (bool) {
/**
* Business logic
*/
} else {
/**
* Business logic
*/
}
}else{
/**
* Business logic
*/
}
}
}
JAVA and Models 使用 java.text.DataFormat 类作为简单工厂模式的典型示例。
简单工厂模式的优势
模型的核心是工厂类。该类包含必要的逻辑判断来决定何时创建登录验证类的实例,而调用者则免除了直接创建对象的责任。简单工厂模式通过这种方式实现了职责分工,当系统引入新的登录模式时,不需要修改调用者。
简单工厂模型的缺点
这个工厂类集中了所有的创建逻辑。当有复杂的层次结构时,所有的业务逻辑都在这个工厂类中实现。当它不能工作时,整个系统都会受到影响。
文章出自:http://qh.itpxw.cn/peixun/software/2022121595.html
文章标题:Java简单工厂模式的详细介绍
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
IT培训网 访问该机构站点 报名留言 加为好友 用户等级:注册会员
用户级别:10
机构名称:IT培训网
联 系 人:罗老师
联系电话:13783581536
联系手机:13783581536
在线客服:
在 线 QQ:
电子邮件:
网站域名:http://www.itpxw.cn
注册时间:2016-07-18 11:07
最后登录:2024-02-20 13:02
Java定义方法的格式是什么?IT培训网小编来告诉大家。所谓方法...
大家在Java教程中会学到关于Java消息推送的知识,那么,Java消息...
常用的Java日期格式转换有哪些?IT培训网小编来告诉大家。 1...
Java创建对象数组的方法是什么?IT培训网小编来告诉大家。Ja...