软件构造:可变类型与不可变类型

目录

1.前置知识

2.可变与不可变

3.SnapShot图


1.前置知识

1.Java是静态类型检查语言。即在编码过程中即可通过编译检查是否含有类型错误,帮助程序员方便修改,不必在运行中才发现bug。

静态类型检查包括5类错误:

        语法错误

        类名/函数名错误

        参数数目错误

        参数类型错误

        返回值类型错误

动态类型检查包括4种错误:

        非法参数值

        非法返回值

        越界

        空指针

2.Java数据类型包括基本数据类型和对象数据类型。

基本数据类型就是int,float,double,char等。

对象数据类型都是继承自Object基类型,包括基本类型包装类。

2.可变与不可变

1.不变性是程序设计的基本原则之一。

2.不可变类型:指变量创建之后始终指向同一个值或引用。

不可变数据类型:一旦创建后不可以改变其值。

不可变引用类型:创建后不可以改变指向的对象。

使用final来保证变量不可以改变:

        final修饰的类型不可以派生子类;

        final修饰的变量不可以改变其值或引用;

        final修饰的方法不可以被子类重写。

3.可变类型:拥有自己的方法修改自己的值或引用。

4.

可变类型与不可变类型对比
可变类型不可变类型
安全性有多个引用时不安全,客户端和设计师可能产生冲突,有时会出现难以发现的bug安全
效率高效,最少化拷贝较低效,频繁修改会产生大量拷贝
共享多模块可以共享数据不可以共享数据

5.改进可变类型的使用使其更加安全:

        采用防御式拷贝,给客户端返回全新的可变类型对象;

        使用不可变类型;

        安全使用可变类型,即保证可变对象只有一个引用,无共享。

3.SnapShot图

SnapShot图用描述程序运行时的内部状态,便于程序员之间交流,便于解释设计思路。

 

 

具体应用:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值