目的
值对象=值 对象=将一个值用对象的方式进行表述,来表达一个具体的固定不变的概念
例子代码
大家都知道, 钱不是万能的, 但没有钱是万万不能的, 最近经济不好, 听说国民老公撕葱和著名发布会相声演员浩浩都被限制了消费,
害得我也做梦梦见我的一千万没了, 醒来看了看银行卡忽然安心了, 原来那一千万还在(余额只有三位数).
我有一位朋友, 最近去见丈母娘, 被丈母娘扫地出门, 原话是这么说的:
我们家人没啥工作, 每天就收收租金, 最近拆迁了, 十套房, 每月收租四五万吧, 你这什么抖音的公司, 之前还修过福报, 我就往高了说, 算你一个月三万, 那也配不上我女儿呀, 要不是看你来了二瓶酒过来, 门你都进不来.
怎么回事, 收租的三万和工作的三万不一样?
最近我在脉脉上看到一个热帖:
https://maimai.cn/web/feed_detail?fid=1353811247&efid=YbKYaA1N8jywASeIF2NauQ&use_rn=1
主要讲的是一个中年码农说自己月入三万不开心, 下面的好多评论都是说工资三万肯定不开心, 哪天加班得了癌症就得被某游(yang)戏(zhu)大厂的保安暴力辞退了, 要是收租三万肯定开心.
值对象模式
那我们怎么让值对象模式来帮我们呢, 首先, 一块钱人民币, 就是一块钱人民币, 不因为他的来源而不同, 他的作用都是相同的, 随着业务也不会发生变化, 比如把一元人民币设置成一美元, 丝毫没有意义
@Getter@EqualsAndHashCode@AllArgsConstructorpublic class Money { private BigDecimal amount; //enum is better private String currency; }
只有全部入参函数和 get 方法, 保证非反射等*操作情况下这个对象的值不被改变, 有相同属性的值对象被判断为相等, 所以 hashCode 和 equals 方法, 需要重写, 为什么重写 equals 方法一定要重写 hashCode, 主要是为了一些使用 hashCode 进行去重或者存储的时候不会出现问题
类图如下:
生产例子
比如常见的范围 Range 类(时间, 金额范围等), 地址(省市区), 金额类等等
课后作业
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved