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

简介: 废话不多说,继续学习设计模式的简单工厂模式简单工厂模式是类的创建模式,又叫静态工厂方法模式。简单工厂模式是由一个工厂对象决定创建哪种产品类实例使用场景假如一个应用系统有多种登录方式,比如:用户密码登录、第三方账号登录。

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

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

使用场景

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

下面我针对登录场景,画了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

学习不是要么0分,要么100分的。80分是收获;60分是收获;20分也是收获。有收获最重要。但是因为着眼于自己的不完美,最终放弃了,那就是彻底的0分了。
相关文章
|
20天前
|
设计模式 SQL 算法
设计模式了解哪些,模版模式
设计模式了解哪些,模版模式
21 0
|
1月前
|
设计模式 Java uml
C++设计模式之 依赖注入模式探索
C++设计模式之 依赖注入模式探索
37 0
|
3月前
|
设计模式 存储 算法
Java 设计模式最佳实践:三、行为模式
Java 设计模式最佳实践:三、行为模式
22 0
|
2月前
|
设计模式 前端开发 JavaScript
观察者模式 vs 发布-订阅模式:两种设计模式的对决!
欢迎来到前端入门之旅!这个专栏是为那些对Web开发感兴趣、刚刚开始学习前端的读者们打造的。无论你是初学者还是有一些基础的开发者,我们都会在这里为你提供一个系统而又亲切的学习平台。我们以问答形式更新,为大家呈现精选的前端知识点和最佳实践。通过深入浅出的解释概念,并提供实际案例和练习,让你逐步建立起一个扎实的基础。无论是HTML、CSS、JavaScript还是最新的前端框架和工具,我们都将为你提供丰富的内容和实用技巧,帮助你更好地理解并运用前端开发中的各种技术。
|
16天前
|
设计模式 Java 数据库
小谈设计模式(2)—简单工厂模式
小谈设计模式(2)—简单工厂模式
|
1天前
|
设计模式 消息中间件 Java
Java 设计模式:探索发布-订阅模式的原理与应用
【4月更文挑战第27天】发布-订阅模式是一种消息传递范式,被广泛用于构建松散耦合的系统。在 Java 中,这种模式允许多个对象监听和响应感兴趣的事件。
8 2
|
4天前
|
设计模式 存储 JavaScript
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
[设计模式Java实现附plantuml源码~创建型] 多态工厂的实现——工厂方法模式
|
4天前
|
设计模式 Java Go
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
[设计模式Java实现附plantuml源码~创建型] 集中式工厂的实现~简单工厂模式
|
6天前
|
设计模式
设计模式(一)简单工厂模式
设计模式(一)简单工厂模式
13 0
|
16天前
|
设计模式 Java
小谈设计模式(9)—工厂方法模式
小谈设计模式(9)—工厂方法模式