首页 > 其他 > 详细

软件构造--immutability mutability的区别简述

时间:2021-07-07 23:59:57      阅读:36      评论:0      收藏:0      [点我收藏+]

最后阶段还是对可变性这里不是很理解,在这总结一下:

Immutability 不变性,是key design principle
不变数据类型:一旦被创建,其值就不能被改变
String是典型的不变类型,每次改变的时候实际上都是new了一个新的String。
对比之下,StringBuilder是字符串的可变类,修改的时候不会创建新的变量。
技术分享图片
对于所有的数据类型来说,常见的不变类包括全部的基础类型和他们的包装类(Integer等),以及String和BigInteger这样的对象类。其余的Object类都是可变的。对于像set,list等容器来说,由于他们有add,remove这样的mutator函数,它们在创建之后都是可以被改变的,所以他们都是可变的。若想把他们变成不可变的可以借用collaction里的wrapper把他们变成undefinedset等,程序就会使你的set、list无法再执行mutator,也就是不可变。在这种情况下如果我们还调用mutator的话会在动态检查中被发现并抛出异常。
所有的不变类都是没有mutator的。

同样我们除了数据类型的不变性,还有引用的不变性。数据类型的不变性指一个数据被创建出来之后便不能被改变,而引用的不变性则指当一个变量引用另一个变量之后,这个变量不可以再引用别的变量,即x=y后不能执行x=z。要想实现引用的不变性需要我们用final去修饰变量。

软件构造--immutability mutability的区别简述

原文:https://www.cnblogs.com/lllllllm/p/14983929.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!