废话不多说,继续学习设计模式的简单工厂模式
简单工厂模式是类的创建模式,又叫静态工厂方法模式。简单工厂模式是由一个工厂对象决定创建哪种产品类实例
使用场景
假如一个应用系统有多种登录方式,比如:用户密码登录、第三方账号登录。那自然建立一个各种登录方式都使用的接口。
下面我针对登录场景,画了uml图
具体代码
- 接口
public interface Login {
public boolean verify(String name,String password);
}
2)登录方式的实现
public class DomainLogin implements Login{
@Override
public boolean verify(String name, String password) {
//TODO
/**
* 业务逻辑
*/
return true;
}
}
public class PasswordLogin implements Login{
@Override
public boolean verify(String name, String password) {
//TODO
/**
* 业务逻辑
*/
return true;
}
}
- 工厂类
public class LoginFactory {
public static Login factory(String type){
if(type.equals("passwordLogin")){
return new PasswordLogin();
}else if(type.equals("domainLogin")){
return new DomainLogin();
}else {
throw new RuntimeException("没有找到对应的登录类型");
}
}
}
- 测试
public static void main(String[] args) {
String type = "passwordLogin";
String name = "name";
String password = "password";
Login login = LoginFactory.factory(type);
Boolean bool = login.verify(name,password);
if(bool){
//业务逻辑
}else{
//业务逻辑
}
}
优点
模式的核心是工厂类,这个类有必要的逻辑判断,可以决定什么时候创建哪种登录实例。而调用者可以免除直接创建对象的责任。简单工厂模式实现了对责任的分割,当系统引入新的登录方式时调用者无需修改。
缺点
工厂类集中了所有的业务逻辑。当有复杂的多层级等级结构时,逻辑 都在这个工厂类中实现。这个工厂类不工作了,整个系统就受到影响。
所有设计模式的代码已经放到github上。
参考:http://www.cnblogs.com/java-my-life/archive/2012/03/22/2412308.html