Java中类的设计技巧有哪些
在Java面向对象编程的过程中,类的设计是一个很有挑战性的工作,不同的人可能对于类的理解不一样,设计出来的类也可能不一样,下文yjbys小编为大家分享的是关于java类的设计技巧,希望对大家学习java有帮助!
1)一定将数据设计为私有。
最重要的是:绝对不要破坏封装性。有时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性。很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但它们的使用方式却不会经常发生变化。当数据保持私有时,它们的表示形式的变化不会对类的使用者产生影响,即使出现bug也易于检测。
2)一定要对数据初始化。
Java不对局部变量进行初始化,但是会对对象的实例域进行初始化。最好不要依赖于系统的默认值,而是应该显式地初始化所有的数据,具体的初始化方式可以是提供默认值,也可以是在所有构造器中设置默认值。
3)不要在类中使用过多的基本数据类型。
就是说,用其他的类代替多个相关的基本数据类型的使用。这样会使类更加易于理解且易于修改。例如,用一个称为Address的新的类替换下面的Customer类中的实例域:
private String street;
private String city;
private String state;
private int zip;
这样,可以很容易地顺应地址的变化,例如,需要增加对国际地址的处理。
4)不是所有的域都需要独立的域访问器和域更改器。
或许,需要获得或设置雇员的薪金。而一旦构造了雇员对象,就应该禁止更改雇用日期,并且在对象中,常常包含一些不希望别人获得或设置的'实例域,例如,在Address类中,存放州缩写的数组。
5)使用标准格式进行类的定义。
一定采用下面的顺序书写类的内容:
公有访问特性部分
包作用域访问特性部分
私有访问特性部分
在每一部分中,应该按照下列顺序列出:
实例方法
静态方法
实例域
静态域
毕竟,类的使用者对公有接口要比对私有的实现细节更感兴趣,并且对方法要比对数据更感兴趣。
但是,哪一种风格更好并没有达成共识。Sun的程序设计风格建议Java程序设计语言先书写域,后书写方法。无论采用哪种风格,重要的一点是要保持一致。
6)将职责过多的类进行分解。
这样说似乎有点含糊不清,究竟多少算是"过多"?每个人的看法不同。但是,如果明显地可以将一个复杂的类分解成两个更为简单的类,就应该将其分解(但另一方面,也不要走极端。设计10个类,每个类只有一个方法,显然也太小了)。
下面是一个反面的设计示例。
public class CardDeck// bad design
{
public CardDeck(){…}
public void shuffile(){…}
public void draw(){…}
public int getTopValue(){}
public int getTopSuit(){}
private int[] value;
private int[] suit;
}
实际上,这个类实现了两个独立的概念:一副牌(含有shuffle方法和draw方法)和一张牌(含有查看面值和花色的方法)。另外,引入一个表示单张牌的Card类。现在有两个类,每个类完成自己的职责:
public class CardDeck// better design
{
public CardDeck(){…}
public void shuffile(){…}
public void draw(){…}
public int getTopValue(){}
public int getTopSuit(){}
private Card[] cards;
}
public class Card {
public Card(int value,int aSuit){}
public int getTopValue(){}
public int getTopSuit(){}
private int value;
private int suit;
}
7)类名和方法名要能够体现它们的职责。
与变量应该有一个能够反映其含义的名字一样,类也应该如此(在标准类库中,也存在着一些含义不明确的例子,如:Date类实际上是一个用于描述时间的类)。
命名类名的良好习惯是采用一个名词(Order)、前面有形容词修饰的名词(RushOrder)或动名词(有"-ing"后缀)修饰名词(例如,BillingAddress)。对于方法来说,习惯是访问器方法用小写get开头(getSalary),更改器方法用小写的set开头(setSalary)。
-
java基础面试题2017
Java平台是基于Java语言的平台。这样的平台目前非常流行,因此微软公司推出了与之竞争的平台以及模仿Java的C#语言。以下是关于java基础面试题,希望大家认真阅读!非技术问题研究比较深入的领域有哪些;对业内信息的关注渠道有哪些;最近都读哪些书;自己最擅长的技术...
-
关于JavaWeb三层架构配置
新手入门JavaWeb三层架构的配置详解,推荐使用mysql,but暂时找不到下载地址,由于此次有课程设计要用sqlserver的,所以下面实践会使用sqlserver(找张安装盘安装)。一、软件下载1、java这里使用的是jdk1.4.2.下载地址:_4_2_;2、tomcat这里的tomcat的版本是5.0的,安装版...
-
如何用JSP连接SQLServer数据库
Java基础用JSP连接SQLServer数据库,是我们在日常中经常用到的'。下面YJBYS小编为大家整理了具体的用法,希望对你有所帮助。,,复制到tomcat目录\common\lib\环境设置:jdbc驱动程序,,复制到tomcat目录\common\lib\2.设置环境变量classpath数据库环境sql-server20...
-
最全的java随机数生成算法
java随机数生成算法是怎么样的?下面yjbys小编为大家分享最新最全的java随机数生成算法,希望对大家学习有所帮助!一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法:1Stringpassword=rateString(10);源码如下:001package;002003importom;004005...