《Java核心技术 卷I》学习笔记16:类设计技巧

本文探讨了面向对象设计的几个关键原则,包括数据私有化、初始化、减少基本类型使用、选择性提供访问器和修改器、分解复杂类、清晰的命名规范以及优先使用不可变类。遵循这些原则可以提高代码的可读性、可维护性和并发安全性。

1.一定要保证数据私有。
绝对不要破坏封装性。数据的表示形式很可能会改变,但它们的使用方法却不会经常变化。当数据保持私有时,表示形式的变化不会对类的使用者产生影响,而且也更容易检测bug。

2.一定要对数据进行初始化。
最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据。

3.不要在类中使用过多的基本类型。
将多个相关的基本类型变量替换为其他的类,这样会使类更易于理解,也更易于修改。例如:

private String street;
private String city;
private String state;
private int zip;
//可以用 Address 类替换这四个实例字段,这样可以很容易地处理地址的变化

4.不是所有的字段都需要单独的字段访问器和字段更改器。
在对象中,常常包含一些不希望别人获得或设置的实例字段,这时就不需要字段访问器和字段更改器。有的实例字段被设置后就不会再修改,这样的实例字段就不需要字段更改器。

5.分解有过多职责的类。
如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解。但也不要走极端,如果设计10个类,每个类只有一个方法,就有些矫枉过正了。

6.类名和方法名要能够体现它们的职责。
类名的惯例:类名应该是一个名词(如Order),或者是前面有形容词修饰的名词(如RushOrder),或者是有动名词修饰的名词(如BillingAddress)。
方法名的标准惯例:访问器方法用小写get开头(如getSalary),更改器方法用小写set开头(如setSalary)。

7.优先使用不可变的类。
不可变的类指没有方法能够修改对象的状态,例如LocalDate类和java.time包中的其他类是不可变的。
可变对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改,其结果是不可预料的。如果类是不可变的,就可以安全地在多个线程间共享其对象。
设计类时,也要尽可能让类是不可变的。当然,并不是所有类都应当是不可变的,要视情况而定。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值