类的基本设计技巧

1.一定要保证数据私有

保证数据私有不会破坏封装性,有时候需要编写一个get()方法或者set()方法对私有数据进行访问或更改,要保持实例域的私有性,数据的表现形式可能会改变,但是它的使用方式却不会经常发生变化。当数据保持私有的时候,它们的表示形式的变化不会对类的使用者产生影响,即使出现bug也容易检测。

2.要对数据初始化

java不对局部变量进行初始化,但是会对类的成员变量使用默认的构造方法进行初始化,即便如此,我们还是不能过度依赖默认构造函数,而是去显式地初始化所有的数据。具体的初始化方式可以是在成员变量声明时提供默认值,也可以使用构造函数设置默认值。

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

例如,现在有两个类,People类和Woman类,两个类都有name,age等一系列属性,如果抛去继承关系不看,那么我们在设计两个类的时候,应该用Woman去代替People类中可以代替的部分,而不是在People类中再去声明一边name,age等属性。这样会使类更加容易理解并且易于修改。

4.不是所有的类都需要get(),set()方法

对于一旦初始化就不希望被访问或者被更改的数据来说,不需要对他们设置get(),set()方法。例如雇员的雇佣日期没有必要使用set()方法重新设置。

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

如果明明可以将一个非常复杂的类分解成多个简简单单的类,那么就应该将其进行分解,当然我们也不不能走极端,把它分解成一百个类
下面是一个反面教材:

class People
{
	private int count;//统计人的个数
	private int age;//人的年龄
	public void beCompany(){}//人们互相陪伴彼此的行为
	public void playFootball(){}//人的踢足球行为
	public void playGames(){}//人的玩游戏行为
}

这是一个看似很正常的类,但是如果细心一些我们就会发现,这个类中有的是至少两个人才能具有的行为和属性,有的却是一个人一个个体就可以具有的属性和行为,假如,我们把类设计成如下这样:

class People
{
	private int count;
	public void beCompany(){}
}
class Person
{
	private int age;
	public void playFootball(){}
	public void playGames(){}
}

显然,我们把原来混乱的类分解成了条理层次分明的两个简单类,这样逻辑更加清晰,使用起来也更加明了,换个角度来看,这居然是一种哲学问题

6.类名成员变量名和方法名要明确规范易懂

当我们在给类或者变量和方法起名字的时候,应该能明确反映它的含义,对于名词变量来说,一般是首字母大写,如变量Order,如果名词前面有修饰词,也应该首字母大写,如RushOrder。对于方法来说,应该采用驼峰式命名,即方法名的动词在名词前,动词首字母小写,名词首字母大写,如getName()方法。切忌使用拼音或者一个字母作为类名或变量名方法名。

7.优先使用不可变的类

如果我们在多个线程中同时试图更改一个对象,就会发生并发更改,结果是不可预料的;而如果类是不可变的,就可以安全地在多个线程间共享其对象。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值