程序员方法类系列:面向对象分类法

上一篇咱们把分类法整明白了,老铁们!今儿整点硬核的,让你瞅瞅啥叫分类法!

一、啥是分类法?

分类法,说白了就是把一堆东西按一定的标准分门别类。比如你瞅瞅你身边的人,按性别分,可以分为男的和女的;按年龄分,可以分为小孩、青年、中年、老头老太太。这就是分类法,简单粗暴,但贼有用!

分类法的核心就是:标准。你得有个标准,才能分得明白。比如你分人,标准可以是性别、年龄、职业、收入……随便你咋分,但标准得固定,不能一会儿按性别,一会儿按年龄,那不就乱套了吗?

二、分类法的前提

分类法不是随便分的,得有几个前提:

1. 标准得固定:比如你分人,标准是性别,那就得一直按性别分,不能中途换成年龄。

2. 分类得完全:比如你分性别,得把所有人都分进去,不能漏了谁。比如中国的性别分类是男、女、其他,不能有个人既不是男也不是女,还没法归类。

3. 标准可以多个:比如你分人,可以先按性别分,再按年龄分,最后按职业分。标准可以叠加,但不能乱。

三、 分类法的几种姿势

分类法有好几种姿势,咱们一个一个唠:

1. 一维分类法

一维分类法,就是按一个标准分,像数轴一样。比如:

 星期几:周一、周二、周三……周日,这就是按时间轴分的。

 月份:一月、二月、三月……十二月,这也是按时间轴分的。

Java Code

String[] months = {"一月", "二月", "三月", "四月", "五月", "六月",

                   "七月", "八月", "九月", "十月", "十一月", "十二月"};

for (String month : months) {

    System.out.println("当前月份:" + month);

}

2. 二元分类法

二元分类法,就是是非、对错、生死这种二选一的分类。比如:

性别:男、女

生死:活人、死人

Java Code

// 二元分类法:按性别分类

String gender = "男";

if (gender.equals("男")) {

    System.out.println("这是个爷们!");

} else {

    System.out.println("这是个娘们!");

}

3. 三元分类法

三元分类法,就是折中的分类。在法律辩论中经常使用,凡事涉及到二元矛盾的,并不能使用二元分类,而是三元,如正说,反说,折中说。比如:

 站队:正方、反方、中立。

 投票:赞成、反对、弃权。

Java Code

// 三元分类法:按投票分类

String vote = "弃权";

switch (vote) {

    case "赞成":

        System.out.println("支持!");

        break;

    case "反对":

        System.out.println("反对!");

        break;

    case "弃权":

        System.out.println("中立!");

        break;

    default:

        System.out.println("无效投票!");

}

4. 四象限分类法

四象限分类法,就是把东西分成四块。比如:

 紧急重要模型:紧急且重要、紧急但不重要、重要但不紧急、不紧急也不重要。

 SWOT分析:优势、劣势、机会、威胁。

Java Code

// 四象限分类法:紧急重要模型

String task = "紧急且重要";

switch (task) {

    case "紧急且重要":

        System.out.println("赶紧干!");

        break;

    case "紧急但不重要":

        System.out.println("找人干!");

        break;

    case "重要但不紧急":

        System.out.println("计划干!");

        break;

    case "不紧急也不重要":

        System.out.println("别干了!");

        break;

    default:

        System.out.println("无效任务!");

}

5. N象限分类法

N象限分类法,就是按多个标准分,每个标准都可以分成若干块。比如:

菜系分类:川菜、鲁菜、粤菜、湘菜……每个菜系还可以按口味分,比如辣、酸、甜、咸。

Java Code

// N象限分类法:菜系分类

String[][] cuisines = {

    {"川菜", "辣"},

    {"鲁菜", "咸"},

    {"粤菜", "甜"},

    {"湘菜", "酸"}

};

for (String[] cuisine : cuisines) {

    System.out.println("菜系:" + cuisine[0] + ",口味:" + cuisine[1]);

}

N象限分类法,适合于多个属性的组合,也可以辅佐与方法输出的结果。也适用于树形结构的递进性分类。

6、枚举法

枚举法,就是把所有可能性都列出来。比如:

中国菜系:川菜、鲁菜、粤菜、湘菜……这些菜系之间没有量化关系,就是单纯的列举。

Java Code

// 枚举法:中国菜系

enum ChineseCuisine {

    川菜, 鲁菜, 粤菜, 湘菜, 苏菜, 浙菜, 闽菜, 徽菜

}

ChineseCuisine cuisine = ChineseCuisine.川菜;

System.out.println("今天吃:" + cuisine);

四、分类法的兜底

分类法最重要的一点就是:得有兜底!

比如你分性别,得有个其他选项,不能让人没得选。比如:

 性别分类:男、女、其他。

 菜系分类:川菜、鲁菜、粤菜、其他。

Java Code

// 分类法的兜底

String gender = "双性人";

switch (gender) {

    case "男":

    case "女":

        System.out.println("标准性别!");

        break;

    default:

        System.out.println("其他性别!");

}

 五、 分类法的应用

分类法在生活中无处不在,比如:

 职场:按职位分,比如经理、主管、员工。

 学校:按年级分,比如一年级、二年级、三年级。

 电商:按商品分类,比如手机、电脑、家电。

Java Code

// 分类法的应用:电商商品分类

String[] categories = {"手机", "电脑", "家电", "服装", "食品"};

for (String category : categories) {

    System.out.println("商品分类:" + category);

}

在我们程序员的工作中,经常要做下拉菜单,树形菜单,映射建模,数据结构选择等等的,这时候使用分类法,能更方便我们思考,记忆,以及应用。

 六、总结

分类法就是按标准分东西,标准得固定、分类得完全、还得有兜底。

分类法有好几种姿势,比如一维、二元、三元、四象限、N象限、枚举法。

分类法在生活中无处不在,学会了分类法,干啥都轻松!

这个系列就暂时到此为止了,如果大家觉得还有什么不清楚或是有新的思路,可以在评论区留言一起探讨!如果可以,也可以继续展开写哦~

 前篇直通车:

《程序员方法论系列:面向对象理论,咱得从根儿上唠明白!》

《程序员方法论系列:类为啥是类?class为啥是class?咱得唠明白!》

《程序员方法论系列:“类”有啥用?》

《程序员方法论系列:面向工作编程》

你可能感兴趣的:(程序员方法论,java,程序人生,改行学it)