zoukankan      html  css  js  c++  java
  • 设计模式(四)_简单工厂模式

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

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

    使用场景

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

    下面我针对登录场景,画了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;
        }
    }
    
    1. 工厂类
    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("没有找到对应的登录类型");
            }
        }
    }
    
    1. 测试
        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

  • 相关阅读:
    python版本升级及pip部署方法
    Redis集群管理(二)
    UP UP UP!(dp)
    One Way Roads(搜索)
    Back to Underworld(搜索)
    队列链表实现以及有序表的合并
    第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛
    Modulo Sum(背包 + STL)
    Co-prime Array&&Seating On Bus(两道水题)
    Hard Process(二分)
  • 原文地址:https://www.cnblogs.com/zhenghengbin/p/9221033.html
Copyright © 2011-2022 走看看