student类中的id的设计。
原始方案:int id;
用一个全局变量maxId来保存目前分配的id最大值,然后在构造函数中“id=++maxId;”。
原始方案缺陷:扩展性和可修改性不好,而且存在多线程隐患。改进步骤一: id=newID();
用一个方法把具体生成id的方案封装,这个好处不言而喻。改进步骤二:要隐藏id的类型。 这个我就有些不明白了。
书上说的原因:1。如果需要把id的类型由整数改为字符串。
2。对外界透露id是整形的做法,实质上是在鼓励程序员对id使用针对整数的操作,如<、>、=等等。
书上说的隐藏方式:如果是c++,简单地使用typeof来把id定义为IdType(一个可以解释为int的用户自定义类型),从而避免将其直接定义为int类型。
如果是其他语言,可以创建一个简单的IdType类。我认为的IdType类应该是这样的:因为id就是标识作用,所以应该覆盖equal()函数。
class IdType{
private XX id; //任何类型均可
private void newId() {……}//创建一个id
IdType() { newId(); } //构造函数
public boolean equals(Object obj){……} //覆盖equals()函数,以便可以达到标识作用
}这只是我很混沌的一点想法,我感觉不怎么懂!请各位高手各抒己见,谈谈自己的看法,谢谢!!~~~还有就我上面创建的类可以达到标识作用,但如果是“一个学生对象的信息对应数据库中学生信息表中一条记录,那id在数据库怎么表示?”,就是说本来用整形来基本类型或者字符串来表示id,这些都可以直接映射到数据库中学生基本信息表中id字段,但如果是对象了,如何映射?请各位高手指教!!~~~~
原始方案:int id;
用一个全局变量maxId来保存目前分配的id最大值,然后在构造函数中“id=++maxId;”。
原始方案缺陷:扩展性和可修改性不好,而且存在多线程隐患。改进步骤一: id=newID();
用一个方法把具体生成id的方案封装,这个好处不言而喻。改进步骤二:要隐藏id的类型。 这个我就有些不明白了。
书上说的原因:1。如果需要把id的类型由整数改为字符串。
2。对外界透露id是整形的做法,实质上是在鼓励程序员对id使用针对整数的操作,如<、>、=等等。
书上说的隐藏方式:如果是c++,简单地使用typeof来把id定义为IdType(一个可以解释为int的用户自定义类型),从而避免将其直接定义为int类型。
如果是其他语言,可以创建一个简单的IdType类。我认为的IdType类应该是这样的:因为id就是标识作用,所以应该覆盖equal()函数。
class IdType{
private XX id; //任何类型均可
private void newId() {……}//创建一个id
IdType() { newId(); } //构造函数
public boolean equals(Object obj){……} //覆盖equals()函数,以便可以达到标识作用
}这只是我很混沌的一点想法,我感觉不怎么懂!请各位高手各抒己见,谈谈自己的看法,谢谢!!~~~还有就我上面创建的类可以达到标识作用,但如果是“一个学生对象的信息对应数据库中学生信息表中一条记录,那id在数据库怎么表示?”,就是说本来用整形来基本类型或者字符串来表示id,这些都可以直接映射到数据库中学生基本信息表中id字段,但如果是对象了,如何映射?请各位高手指教!!~~~~
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货