码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式(四)_简单工厂模式

时间:2018-06-24 17:52:23      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:exception   cep   block   rip   学习   分割   []   domain   logs   

废话不多说,继续学习设计模式的简单工厂模式

简单工厂模式是类的创建模式,又叫静态工厂方法模式。简单工厂模式是由一个工厂对象决定创建哪种产品类实例

使用场景

假如一个应用系统有多种登录方式,比如:用户密码登录、第三方账号登录。那自然建立一个各种登录方式都使用的接口。

下面我针对登录场景,画了uml图
技术分享图片

具体代码

1) 接口

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;
    }
}

3) 工厂类

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("没有找到对应的登录类型");
        }
    }
}

4) 测试

    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

设计模式(四)_简单工厂模式

标签:exception   cep   block   rip   学习   分割   []   domain   logs   

原文地址:https://www.cnblogs.com/zhenghengbin/p/9221033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!