Java 满血domain

我们一般创建的Java Model只有getter和setter方法,都是贫血型的;下面是一个满血的Java Model,业务放在实体类中;

import java.util.*;

public class Person {

    private String name;

    private Integer age;

    private String sex;

    /**
     * 兴趣爱好
     */
    private List<String> hobbies = new ArrayList<>();

    /**
     * 喜欢吃的食物
     */
    private List<String> foods = new ArrayList<>();

    /**
     * 个人经历
     */
    private Map<Integer, Object> personalHistory = new HashMap<>();

    public String getName() {
        return name;
    }

    public void setName(String name) {
        if(!checkNameChese(name))
            throw new RuntimeException(name + "不规范!");
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        if(null == age || age <=0 || age > 120)
            throw new RuntimeException(age + "不规范!");
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public List<String> getHobbies() {
        return hobbies;
    }

    public void setHobbies(List<String> hobbies) {
        this.hobbies = hobbies;
    }

    public List<String> getFoods() {
        return foods;
    }

    public void setFoods(List<String> foods) {
        this.foods = foods;
    }

    public void addFood(String food) {
        if(null == food) {
            throw new RuntimeException("食物不为空!");
        }
        for(String item : hobbies) {
            if(item.equals(food)) {
                throw new RuntimeException(food + "已填加!");
            }
        }
        foods.add(food);
    }

    public void delFood(String food) {
        if(null == food) {
            throw new RuntimeException("食物不为空!");
        }
        if(!hobbies.contains(food)) {
            throw new RuntimeException(food + "不存在!");
        }
        foods.remove(food);
    }

    public void addHobby(String hobby) {
        if(null == hobby) {
            throw new RuntimeException("兴趣爱好不为空!");
        }
        for(String item : hobbies) {
            if(item.equals(hobby)) {
                throw new RuntimeException(hobby + "已填加!");
            }
        }
        hobbies.add(hobby);
    }

    public void delHobby(String hobby) {
        if(null == hobby) {
            throw new RuntimeException("兴趣爱好不为空!");
        }
        if(!hobbies.contains(hobby)) {
            throw new RuntimeException(hobby + "不存在!");
        }
        hobbies.remove(hobby);
    }

    public void addHistory(Integer age, Object history) {
        if(null == age || age <=0) {
            throw new RuntimeException("年龄不符合规定!");
        }
        if(null == history) {
            throw new RuntimeException("个人经历不为空!");
        }
        if(age > this.age) {
            throw new RuntimeException("个人经历不得大于");
        }
        Iterator<Map.Entry<Integer, Object>> iterator = personalHistory.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, Object> next = iterator.next();
            if(next.getKey().equals(age) && next.getValue().equals(history)) {
                throw new RuntimeException(age + "岁,个人经历:" + history + "已存在!");
            }
        }
        personalHistory.put(age, history);
    }

    public void delHistory(Integer age) {
        if(null == age || age <=0) {
            throw new RuntimeException("年龄不符合规定!");
        }
        if(age > this.age) {
            throw new RuntimeException("个人经历不得大于");
        }
        if(!personalHistory.containsKey(age)) {
            throw new RuntimeException(age + "岁,个人经历不存在!");
        }
        Iterator<Map.Entry<Integer, Object>> iterator = personalHistory.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<Integer, Object> next = iterator.next();
            if(next.getKey().equals(age)) {
                iterator.remove();
            }
        }
    }

    /**
     * 判定输入的是否是汉字
     *
     * @param c 被校验的字符
     *
     * @return true代表是汉字
     */
    private static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }

    /**
     * 校验String是否全是中文
     *
     * @param name
     *      被校验的字符串
     * @return true代表全是汉字
     */
    private static boolean checkNameChese(String name) {
        boolean res = true;
        char[] cTemp = name.toCharArray();//转换为数组
        for (int i = 0; i < name.length(); i++) {
            if (!isChinese(cTemp[i])) {//逐个判断是否为中文
                res = false;
                break;
            }
        }
        return res;
    }

}

 

posted @ 2020-03-17 16:27  尘世间迷茫的小书童  阅读(838)  评论(0编辑  收藏  举报