`

Table Driven(表驱动)方法实例

阅读更多
实例一:
/**
 * 驾驶人年龄段
 * 保险行业,会对驾驶人的年龄做年龄段的区分判断
 * 驾驶人年龄段:01-[18,25);02-[25,30);03-[30-35);04-[35,40);05-[40,45);06-[45,50);07-[50-55);08-[55,+∞)
 */
public class AgePeriodTest {

    //if...else...方法
    /*
    public static String getAgePeriod(int age) {
        
        String agePeriod = "";
        if (age > 55) {
            agePeriod = "08";
        } else if (age >= 50) {
            agePeriod = "07";
        } else if (age >= 45) {
            agePeriod = "06";
        } else if (age >= 40) {
            agePeriod = "05";
        } else if (age >= 35) {
            agePeriod = "04";
        } else if (age >= 30) {
            agePeriod = "03";
        } else if (age >= 25) {
            agePeriod = "02";
        } else if (age >= 18) {
            agePeriod = "01";
        }
        return agePeriod;
    }
    */
    
    //Table Driven(表驱动)方法
    enum AgePeriod {
        A(55, "08"),   
        B(50, "07"),   
        C(45, "06"),
        D(40, "05"),   
        E(35, "04"),   
        F(30, "03"),   
        G(25, "02"),   
        H(18, "01");    
        
        private int age;   
        private String agePeriod;     
        
        AgePeriod(int age, String agePeriod) {     
            this.age= age;     
            this.agePeriod = agePeriod;   
        } 
    }
    
    public static String getAgePeriod(int age) {
        for (AgePeriod agePeriod : AgePeriod.values()) {
            if (age >= agePeriod.age) {
                return agePeriod.agePeriod;
            }
        }
        return "";
    }
    
    public static void main(String[] args) {
        String res = getAgePeriod(1);
        System.out.println("res:-" + res);
        res = getAgePeriod(18);
        System.out.println("res:01-" + res);
        res = getAgePeriod(24);
        System.out.println("res:01-" + res);
        res = getAgePeriod(25);
        System.out.println("res:02-" + res);
        res = getAgePeriod(29);
        System.out.println("res:02-" + res);
        res = getAgePeriod(30);
        System.out.println("res:03-" + res);
        res = getAgePeriod(34);
        System.out.println("res:03-" + res);
        res = getAgePeriod(35);
        System.out.println("res:04-" + res);
        res = getAgePeriod(39);
        System.out.println("res:04-" + res);
        res = getAgePeriod(40);
        System.out.println("res:05-" + res);
        res = getAgePeriod(44);
        System.out.println("res:05-" + res);
        res = getAgePeriod(45);
        System.out.println("res:06-" + res);
        res = getAgePeriod(49);
        System.out.println("res:06-" + res);
        res = getAgePeriod(50);
        System.out.println("res:07-" + res);
        res = getAgePeriod(54);
        System.out.println("res:07-" + res);
        res = getAgePeriod(55);
        System.out.println("res:08-" + res);
        res = getAgePeriod(59);
        System.out.println("res:08-" + res);
        res = getAgePeriod(60);
        System.out.println("res:08-" + res);
        res = getAgePeriod(100);
        System.out.println("res:08-" + res);
    }
}
运行结果:
res:-
res:01-01
res:01-01
res:02-02
res:02-02
res:03-03
res:03-03
res:04-04
res:04-04
res:05-05
res:05-05
res:06-06
res:06-06
res:07-07
res:07-07
res:08-07
res:08-08
res:08-08
res:08-08
 
实例二:
import java.util.HashMap;
import java.util.Map;

public class TableDriven {

//    public static String convertCertificatTypeToClient(String pasType) {
//        
//        if (pasType.equalsIgnoreCase("01")) {
//            return "1";
//        } else if (pasType.equalsIgnoreCase("02")) {
//            return "2";
//
//        } else if (pasType.equalsIgnoreCase("03")) {
//            return "3";
//
//        } else if (pasType.equalsIgnoreCase("04")) {
//            return "7";
//
//        } else if (pasType.equalsIgnoreCase("05")) {
//            return "6";
//
//        } else if (pasType.equalsIgnoreCase("06")) {
//            return "0";
//        } else {
//            return "0";
//        }
//    }
    
    public static String convertCertificatTypeToClient(String pasType) {
        
        //表驱动法   
        Map<String, String> stateTable = new HashMap<String, String>();
        stateTable.put("01", "1");
        stateTable.put("02", "2");
        stateTable.put("03", "3");
        stateTable.put("04", "7");
        stateTable.put("05", "6");
        stateTable.put("06", "0");
        
        String res = stateTable.get(pasType);
        if(res == null) {
            res = "0";
        }
        return res;
    }
    
    public static void main(String[] args) {
        String res = convertCertificatTypeToClient("01");
        System.out.println("1:" + res);
        res = convertCertificatTypeToClient("02");
        System.out.println("2:" + res);
        res = convertCertificatTypeToClient("03");
        System.out.println("3:" + res);
        res = convertCertificatTypeToClient("04");
        System.out.println("7:" + res);
        res = convertCertificatTypeToClient("05");
        System.out.println("6:" + res);
        res = convertCertificatTypeToClient("06");
        System.out.println("0:" + res);
        res = convertCertificatTypeToClient("00");
        System.out.println("0:" + res);
    }
}
运行结果:
1:1
2:2
3:3
7:7
6:6
0:0
0:0
分享到:
评论

相关推荐

    Table Driven Methods

    **标题:**表驱动方法(Table Driven Methods) 在编程领域,表驱动方法是一种设计模式,它提倡将复杂的逻辑结构转化为数据表格的形式,从而简化代码并提高可维护性。这种技术通常用来替代传统的if-else或switch...

    WINRUNNER数据驱动实例

    ### WINRUNNER 数据驱动测试实例解析 #### 一、引言 在软件测试领域,WinRunner 是一款由Mercury Interactive(后被HP收购)开发的功能强大的自动化测试工具,主要用于进行功能性和回归性测试。其中,数据驱动测试 ...

    ejb3实例源代码

    EJB 3引入了注解(Annotations)来简化配置,比如`@Entity`表示这是一个实体Bean,`@Table`定义映射的数据库表,`@Id`标记主键字段。此外,还支持JPA(Java Persistence API)和Hibernate等ORM框架。 2. **会话Bean...

    ejb 3.0 新实例

    例如,`@Entity`注解用于标记一个实体类,`@Table`指定对应的数据库表,`@Id`定义主键等。 3. **无容器依赖的部署**:EJB 3.0允许bean在没有EJB容器的情况下运行,这对于单元测试和轻量级应用非常有用。 4. **简化...

    EJB 3.0实例教程

    开发者可以使用`@Entity`注解来标记一个类为实体类,并使用`@Table`指定对应的数据库表。属性可以使用`@Id`标记为主键,而`@Column`则定义列名和属性映射。JPA还支持ORM(对象关系映射),使得开发者可以通过面向...

    EJB3 实例练习(一)

    `@Table`注解用于指定对应的数据库表,而`@Id`注解则标记主键字段。EJB3的JPA(Java Persistence API)提供了一种声明式的方式管理对象关系映射(ORM),使得开发人员可以更专注于业务逻辑,而非数据库操作。 3. ...

    EJB3.0实例教程

    3. **消息驱动Bean(Message Driven Bean)**:用于处理JMS(Java Message Service)消息,是异步处理的典型组件。 ### 注解简化开发 EJB3.0引入了注解,极大地减少了XML配置。例如: - `@Entity`:标记一个类为...

    EJB3 实例程序

    例如,`@Stateless`、`@Stateful`、`@MessageDriven`和`@Entity`等注解分别用于声明无状态会话bean、有状态会话bean和消息驱动bean以及实体bean。 2. **持久性管理**:EJB3引入了JPA(Java Persistence API),通过...

    中文最新EJB3.0实例教程下载

    例如,`@Stateless`、`@Stateful`、`@Singleton`、`@MessageDriven`等注解分别用于声明无状态会话bean、有状态会话bean、单例bean和消息驱动bean。这些注解使代码更加简洁,提高了开发效率。 其次,EJB3.0的持久化...

    EJB3实例教程.rar

    例如,`@Entity`用于标记实体Bean,`@Table`定义数据库表,`@Column`指定字段映射,`@Stateless`或`@Stateful`定义会话Bean的类型,`@MessageDriven`标识消息驱动Bean。 ### 4. 容器管理的事务(CMT) EJB3容器自动...

    EJB实例教程黎活明

    例如,使用`@Stateless`、`@Stateful`、`@Singleton`注解可以声明会话bean的不同状态,而`@Entity`和`@Table`注解则用于定义实体bean及其对应的数据库表。 在EJB实例教程中,黎活明可能详细讲解了以下关键概念: 1...

    EJB3.0 实例教程 pdf

    开发者可以通过`@Entity`注解定义实体类,使用`@Id`指定主键,通过`@Table`指定对应的数据库表。 **5. 容器管理事务(CMT)** EJB3.0中的事务管理分为容器管理事务和 bean 管理事务。容器管理事务(CMT)允许...

    ejb3.0实例代码

    通过使用注解(如`@Entity`和`@Table`),我们可以轻松地将Bean与数据库表关联,而无需编写复杂的Entity Home和Entity Bean接口。 2. **注解驱动(Annotation-Based)**:EJB 3.0引入了大量注解,大大减少了XML配置...

    EJB3.0实例教程 源代码

    在《EJB3.0实例教程》中,你将看到如何使用如`@Stateless`、`@Stateful`、`@MessageDriven`和`@PersistenceContext`等注解来定义EJB组件的行为和依赖关系。这大大减少了对XML配置的依赖,使得代码更加清晰易读。 ##...

    JAVA100例之实例92EJB的学习2

    1. **EJB类型**:EJB主要分为三种类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。会话Bean用于处理客户端请求,实体Bean映射数据库中的持久化对象,而消息驱动...

    ejb\ejb3.0实例教程

    3. **消息驱动Bean(Message Driven Bean)**:这类Bean用于处理Java Message Service (JMS) 消息,是异步处理的理想选择。@MessageDriven注解标记了此类Bean。 4. **依赖注入(Dependency Injection)**:EJB3.0...

    ejb3.0开发实例(java工程)

    例如,@Stateless、@Stateful、@MessageDriven等注解分别用于声明无状态会话bean、有状态会话bean和消息驱动bean。这使得开发更加直观,提高了代码的可读性。 2. **实体Bean的简化**:EJB 3.0引入了JPA(Java ...

    JBoss EJB3.0实例教程

    书中可能涵盖了诸如数据库连接池、消息驱动bean(Message Driven Bean, MDB)、定时器服务(Timer Service)、会话bean的生命周期管理等多个主题,帮助读者全面掌握EJB3.0的实用技能。 总之,《JBoss EJB3.0实例...

    EJB3.0 实例教程

    - **消息驱动Bean(Message-Driven Bean,MDB)**:用于处理JMS(Java Message Service)消息,是异步处理的理想选择。 ### 2. EJB 3.0 的主要特性 - **注解驱动(Annotation-Based)**:EJB 3.0大量使用注解,如@...

    ejb3.0中文实例教程

    3. **消息驱动Bean(Message-Driven Beans)**:这种类型的Bean用于处理JMS(Java Message Service)消息,提供了异步处理的能力,使得应用程序能够处理高并发的请求。 4. **注解(Annotations)**:EJB 3.0大量...

Global site tag (gtag.js) - Google Analytics