javaCore- chapter4-类的设计技巧

使用下面这些技巧可以使得设计出来的类更具有OOP的专业水准:

1.一定要保证数据私有

这是最重要的;绝对不要破坏封装性。有时候需要编写一个访问器方法或者是更改器方法,但是最好还是保持实力域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但是他们的使用方式并不会经常改变,当数据私有时,它们的表示形式的变化不会对类的使用者 产生影响,即使出现bug也容易检测。

2.一定要对数据初始化

java不对全局变量进行初始化,但是会对数据的实力域进行初始化。最好不要依赖于系统的默认值,而是应该显式的初始化所有的数据,具体的初始化方式可以提供默认值,也可以是在所有构造器中设置默认值。

3.不要在类中使用过多的基本类型

就是说,在其他的类代替多个相关的基本类型的使用。这样会使类更加易于理解且易于修改。例如,用一个称为address的新的类替换一个customer类中以下实力域:

private String street;
private String city;
private String state;
private int zip;

这样很容易处理地址的变化,例如,需要增加对国际地址的处理。

4.不是所有的域都需要独立的域访问器和域更改器

或许,需要获得或者设置雇员的薪水,而一旦构造了雇员对象,就应该禁止更改雇佣雇员的日期,并且在对象中,常常包含一些不希望别人获得或者设置的实力域,例如,在address中,存放州缩进写的数组。

5.将职责过多的类进行分解

为了保证类尽可能职责单一,最好能将职责拆分。
这样说可能有点含糊不清,究竟多少算是:过多。每个人的看法可能不同,但是,如果明显地讲一个复杂的类分解成两个简单的类,就应该将其分解。

6.类名和方法名要尽量做到见名知意

命名类名的良好习惯是采用一个名词Order、前面有形容词修饰的名词RushOrder,或者动名词例如Order-ing后缀,或者BillingAddress,对于方法来说,习惯是访问器方法用小写get开头getSalary,更改器方法习惯是setSalary

7.优先使用不可变量的类

LocalDate类以及Java.time包下面中的其他类是不可变的-没有方法能够修改对象的
更改对象的问题在于,如果多个线程试图更改同一个对象,就会发生并发更改,其结果是不可预测的。如果类是不可变的,就可以安全的在对个线程之间享用同一个对象。
因此,要竟可能让类成为一个不可变的类。对于表示值的类,如果一个字符串或者一个时间点,这尤其不容易。计算会产生新值,而不是更新原来的值。
当然,并不是所有的类都应该是不可变的,如果员工加薪时候让raiseSalary方法返回一个新的Employee对象就会很奇怪。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值