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

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

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

使用场景

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

下面我针对登录场景,画了uml图
enter image description here

具体代码

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

猜你喜欢

转载自www.cnblogs.com/zhenghengbin/p/9221033.html
今日推荐