类的设计技巧

类的设计技巧

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

  • 一定要保证数据私有
    这是最重要的,一定要保证数据私有。很多惨痛的经验告诉我们,数据的表示形式可能会改变,但是它们的使用方式却不会经常发生变化。当数据保持私有时,它们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于调试。

  • 一定要对数据初始化
    Java不会对局部变量初始化,但是会对对象的实例域进行初始化。尽量不要依赖于系统的默认值,而是应该显示地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。

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

private String street;
private String city;
private String state;
private int zip;
  • 不是所有的域都需要独立的域访问器和域更改器
    或许,需要获得或设置雇员的薪金。但一旦构造了雇员的对象,就应该禁止更改雇佣日期,并且在对象中,常常需要包含一些不希望别人获得或设置的实例域,比如,在Address类中,存放州缩写的数组。

  • 将职责过多的类进行分解
    这样说似乎有点含糊不清,究竟多少算”过多”? 每个人的看法不同。但是,如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解(但另一方面,也不要走极端。设计10个类,每个类只有一个方法,显然有些矫枉过正了)。

  • 类名和方法名要能够体现它们的职责
    与变量应该有一个能够反映其含义的名字一样,类也应该如此。命名类名的良好习惯是采用一个名词(Order)、前面有形容词修饰的名词(RushOrder)或动名词(有'ing'后缀)修饰的名词(例如,BillingAddress)。对于方法来说,习惯是访问器方法用小写get开头(getSalary),更改器方法用小写的set开头(setSalary)。

  • 优先使用不可变类
    更改对象的问题在于,如果多个线程试图同时更新一个对象,就会发生并发更改。其结果是不可预料的。如果对象是不可变的,就可以安全地在多个线程间共享对象。因此要尽可能让类是不可变的,这是一个很好的想法。对于表示值的类,如一个字符串或一个时间点,这尤其容易。计算会生成新的值,而不是更新原来的值。当然,并不是所有的类都应当是不可变的。如果员工加薪时,raiseSalary方法返回一个新的Employee对象,这会很奇怪。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值