zoukankan      html  css  js  c++  java
  • java enum简记

    1 enum的责任链

    利用enum可以为枚举实例添加方法的特性,可以构造简单的责任链 

    package enumeration;
    
    public class StringHandler {
        enum handler {
            Sensitive {
                @Override
                String hand(String msg) {
                    return msg.replace("敏感", "*");
                }
            },
            HTML {
                @Override
                String hand(String msg) {
                    return msg.replace("<", "[").replace(">", "]");
                }
            };
            //枚举实例须实现此方法
            abstract String hand(String msg);
        }
    
        //遍历枚举实例处理字符串
        public static String hand(String msg) {
            for (handler h : handler.values()) {
                msg = h.hand(msg);
            }
            return msg;
        }
    
        public static void main(String[] args) {
            String msg = "敏感字符,<html>";
            System.out.println(StringHandler.hand(msg));
        }
    }

    这种责任链简单而优雅,但扩展性,灵活性不够

     

    2 状态机

    人在高兴,悲伤状态下的笑和哭具有不同的意义

    package enumeration;
    
    public class Person {
        //自己有一个状态
        private State s;
        public Person(State s){this.s = s;}
        //调用相应状态下的方法
        public void smile(){
            s.smile();
        };
    
        public void cry(){
            s.cry();
        };
    }
    
    //状态
    enum State {
        //高兴状态下的方法实现
        Happy {
            @Override
            public void smile() {
                System.out.println("Happy Smile");
            }
    
            @Override
            public void cry() {
                System.out.println("Happy cry");
            }
        },
        //悲伤状态下的方法实现
        Sad {
            @Override
            public void smile() {
                System.out.println("Sad Smile");
            }
    
            @Override
            public void cry() {
                System.out.println("Happy cry");
            }
        };
    
        //需要实现的方法
        public abstract void smile();
    
        public abstract void cry();
    }

    客服端

    package enumeration;
    
    public class Client {
        public static void main(String[] args) {
          Person p = new Person(State.Happy);
            p.smile();
            p = new Person(State.Sad);
            p.smile();
        }
    }

    结果:

    Happy Smile
    Sad Smile

    这种简单的状态机展示了java enum的优雅,简单与清晰.

     

  • 相关阅读:
    自动化框架总结-2(转)
    svn离线安装以及配置,管理python自动化脚本
    自动化框架总结-1(转)
    pytest参数化、标记用例、生成html报告
    pytest作为前置和后置的使用
    笔记:常用xpath
    read_ini.py
    深入理解python类装饰器和带参数装饰器
    Python 03-Python3基础语法
    Python 02-Python2.x与3.x版本区别
  • 原文地址:https://www.cnblogs.com/79home/p/2509254.html
Copyright © 2011-2022 走看看