《JAVA与模式》第1天―简单工厂模式 (二)

2014-11-24 08:22:25 · 作者: · 浏览: 1

String loginType = "password";
String name = "name";
String password = "password";
Login login = new LoginManager().factory(loginType);
boolean bool = login.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
}
}
package com.bankht.factory;

import org.junit.Test;

/**
* @author: 特种兵—AK47
* @创建时间:2012-6-18 下午02:31:41
*
* @类说明 :测试工厂类
*/
public class TestFactory {

@Test
public void testFactory() {
// TODO Auto-generated method stub
String loginType = "password";
String name = "name";
String password = "password";
Login login = new LoginManager().factory(loginType);
boolean bool = login.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
}
}

测试结果:

[sql]
您从工厂里拿的是:口令认证
您从工厂里拿的是:口令认证

简单工厂模式的结构如下图:


\

我们可以设想一下真实的场景,如果把上面的Test当做一个servlet的话,当客户端发起登录请求——>请求交给服务端的Servlet——>Servlet根据客户端传递的loginType调用工厂类LoginManager的factory()方法——>factory()方法根据参数loginType创建相应的登录验证类(DomainLogin或PasswordLogin)并返回——>登录验证类调用方法verify()验证用户名密码是否正确

\

假如不使用简单工厂模式则验证登录Servlet代码如下(假设Test为一个Servlet,变量loginType、name、password表示从客户端传递过来的参数):

[java]
package com.bankht.factory;

/**
* @author: 特种兵—AK47
* @创建时间:2012-6-19 下午02:26:45
*
* @类说明 :
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub

String loginType = "password";
String name = "name";
String password = "password";
// 处理口令认证
if (loginType.equals("password")) {
PasswordLogin passwordLogin = new PasswordLogin();
boolean bool = passwordLogin.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
}
// 处理域认证
else if (loginType.equals("passcode")) {
DomainLogin domainLogin = new DomainLogin();
boolean bool = domainLogin.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
} else {
/**
* 业务逻辑
*/
}
}
}
package com.bankht.factory;

/**
* @author: 特种兵—AK47
* @创建时间:2012-6-19 下午02:26:45
*
* @类说明 :
*/
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub

String loginType = "password";
String name = "name";
String password = "password";
// 处理口令认证
if (loginType.equals("password")) {
PasswordLogin passwordLogin = new PasswordLogin();
boolean bool = passwordLogin.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
}
// 处理域认证
else if (loginType.equals("passcode")) {
DomainLogin domainLogin = new DomainLogin();
boolean bool = domainLogin.verify(name, password);
if (bool) {
/**
* 业务逻辑
*/
} else {
/**
* 业务逻辑
*/
}
} else {
/**
* 业务逻辑
*/
}
}
}

作者:m13666368773