浏览 2644 次
锁定老帖子 主题:到底该不该用静态方法?
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-06-27
java 代码
我在前台调用它的静态方法,获得一个包含若干的Topic对象的容器,然后在依次输出的界面上。由于没有项目经验,所以不知道该怎么去设计,这样设计好不好,我对设计模式不是很清楚,所以想自己练一个项目实践一下。 还有一个问题就是,如果我想做一个发帖子的功能,那么这个方法我感觉应该还放在Topic这个类里面,可是这个方法我依然用的是静态方法,之前也想过用实例方法,不过我感觉发帖子这个功能没有必要再实例化一次对象。 java 代码
表达能力有限,可能有的地方说的不太明白,关于实际项目的设计方法,我一直不太明白,我知道这样设计有点像结构化的风格而不是面向对象,怎么做出可维护的程序,还请有耐心的朋友赐教吧,呵呵 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-06-27
我觉得你的设计有点问题。Topic这个类应该设计成一个独立的纯粹的PO类。里面只涉及属性和set,get方法。
具体的对Topic的存取的方法应该放到业务逻辑层去处理。 |
|
返回顶楼 | |
发表时间:2007-06-27
至于你说的静态方法的问题,我认为对于无状态的对象来说,尽量使用静态方法。毕竟可以节省内存。
你Topic类设计的挺奇怪:既然Topic类有id属性,为什么findByBoardId()方法还要设置个String id的参数呢?如果就按照你的设计方法,应该这样: public class Topic{ private int id; //帖子编号 private String title; //标题 private String content; //内容 private String boardId; //所在版面的ID public ArrayList findByBoardId(){ ArrayList l = new ArrayList(); //DB是我自定义个一个数据库连接类,返回的是查询结果。 ResultSet rs = DB.query("SELECT * FROM topics WHERE board_id=" + this.id); while(rs.next()){ //把每条记录封装到对象中,然后放到容器里。 l.add(new Topic(rs.getString("id"),rs.getString("title"), rs.getString("content"),rs.getString("board_id"))); } } 如上设计的话,你的那些方法就不能采用静态方法了。 |
|
返回顶楼 | |
发表时间:2007-06-27
谢谢你的指导,明白了很多了,不过看来这里不太适合我这种新手。。。提个问题被减了20分,郁闷
|
|
返回顶楼 | |
发表时间:2007-06-27
学到东西就好,别太在意分数。下次发帖前考虑一下发到哪个版里更合适就好了
|
|
返回顶楼 | |
发表时间:2007-06-28
Rocwo 写道 至于你说的静态方法的问题,我认为对于无状态的对象来说,尽量使用静态方法。毕竟可以节省内存。
你Topic类设计的挺奇怪:既然Topic类有id属性,为什么findByBoardId()方法还要设置个String id的参数呢?如果就按照你的设计方法,应该这样: public class Topic{ private int id; //帖子编号 private String title; //标题 private String content; //内容 private String boardId; //所在版面的ID public ArrayList findByBoardId(){ ArrayList l = new ArrayList(); //DB是我自定义个一个数据库连接类,返回的是查询结果。 ResultSet rs = DB.query("SELECT * FROM topics WHERE board_id=" + this.id); while(rs.next()){ //把每条记录封装到对象中,然后放到容器里。 l.add(new Topic(rs.getString("id"),rs.getString("title"), rs.getString("content"),rs.getString("board_id"))); } } 如上设计的话,你的那些方法就不能采用静态方法了。 静态方法并不能节省内存,只是减少了对象创建的开销,相反,静态方法越多,所占用的内存就越多,同时也违背了OO,有利有弊,具体使用否,只能自己权衡得失了,没有说哪个错哪个对的。 |
|
返回顶楼 | |
发表时间:2007-06-28
我那个方法的ID 不是帖子ID,而是版面Id,因为我要查询的是特定板块的帖子。然后用这个方法返回对象的集合,我总感觉这样不太好,但是又想不出更好的方法
|
|
返回顶楼 | |