您好!最近我在学校做一个数据库的作业,用JAVA开发一个微博,完成一些基本功能。
首先前提是我没有使用任何框架。数据库是这样设定的:User表,存放用户信息。Weibo表,存放每一条微博记录。
对应的,我就做了两个类,一个是User类,一个是Weibo类,成员变量就是对应的同名表中的所有属性(这两个类有点类似javabean,也是有get、set方法)。
目前两个类只对应某一条记录内容而进行数据库的增删改查功能。现在问题来了。
问题一、我想有一个“传入用户的id,返回存有用户发布过的微博的数组”的方法listWeibo(传递的参数有待商榷),用一个ArrayList<Weibo>去装载结果,再把结果传递给界面进行调用展示。
这个listWeibo方法到底应该放在哪一个类里面呢?我有几种想法:1、放在User类中。原因:列出微博这个动作是根据用户的id去做,也就是说是User这个实例它自己完成的一个动作。比如:User.listWeibo()这样的用法(引用成员变量this.idOfUser)。2、放在Tool类中,而且listWeibo定义为静态方法。原因:列出微博是高级一点的业务逻辑,可以都放在一个工具里面去完成动作。
         Tool类是一个封装了许多“操作javabean的业务逻辑方法”的类。比如:Tool.listWeibo(int idOfUser)这样的方式进行传参调用。是哪种方式比较好呢?或者老师您能提供更规范的用法?问题二、有人认为我一次返回了所有的微博(ArrayList<Weibo>这个对象数组包含了所有我要返回的微博,如果有20条,就包含了20个对象)这样占用了很多空间。对此,我觉得可以这样解决。
每次只返回一串idOfWeibo的数组,在界面取数据的那个逻辑里面,先实例化一个Weibo:Weibo weibo = new Weibo();用public Weibo returnWeibo(int idOfWeibo)这样的一个方法对weibo对象赋值。比方说:weibo = Tool.returnWeibo(2)。这样对象weibo的那块空间就被重用。
是不是这样做比较好?可是我又感觉这样界面逻辑部分就要多做一些工作,是不是复杂化了别人的工作呢?目前问题就这两个。各路大牛如果有时间就解答一下我吧,谢谢!由此我心生疑惑,到底面向对象程序设计,形形色色的方法到底应该放在哪里?不同类要完成方法到多细的地步呢?