有必要给初学者解决下“月经题”,散分!
都是关于面向对象的,http://bbs.csdn.net/topics/390528973 http://bbs.csdn.net/topics/390536618
花了点时间给两个楼主解答,同时希望初学者少走弯路,不要在为“面向对象”而面向对象,要提前理解JavaBean+DAO的模式(简单的说,就是把数据和方法完全分离;如果实在还不理解,就回忆下C语言的"结构体+函数式"编程的思想,面向过程你能理解吧,换了个更简单的面向对象怎么就纠结了?),简化今后的编程,加快JavaSE学习的速度。
为什么现在有泛型,为什么有反射,为什么有纯POJO?这些思想就是要让你的“数据”和“操作”完全分离;类似于“冰箱具有--开打、关闭方法,汽车具有--行驶、刹车方法”的代码绝对绝对不能再出现在Pojo当中了!
以后谁再写以下这种2B代码你们项目经理跟你没完!
package beantest.bean;
/**
*爱好
*
*/
public class Hobby {
/**
* 主键--在数据库中的下标
*/
private int id;
/**
* 名称
*/
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Hobby(int id, String name) {
super();
this.id = id;
this.name = name;
}
@Override
public String toString() {
return "Hobby [id=" + id + ", name=" + name + "]";
}
}
package beantest.bean;
/**
* 职业
*/
public class Job {
/**
* 主键--在数据库中的下标
*/
private int id;
/**
* 名称
*/
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Job(int id, String name) {
super();
this.id = id;
this.name = name;
}
public Job() {
super();
}
@Override
public String toString() {
return "Job [id=" + id + ", name=" + name + "]";
}
}
package beantest.bean;
import java.util.List;
/**
* 人
*/
public class Person {
/**
* 主键--在数据库中的下标
*/
private int id;
/**
* 姓名
*/
private String name;
/**
* 性别 1-男 2-女
*/
private int male;
/**
* 年龄
*/
private int age;
/**
* 是否在世
*/
private boolean isLive;
/**
* 父亲id引用 -1表示不存在
*/
private int fatherId;
/**
* 母亲id引用 -1表示不存在
*/
private int motherId;
/**
* 爱人的id引用 -1表示不存在
*/
private int loverId;
/**
* 职业的id引用 -1表示不存在
*/
private int jobId;
/**
* 由于可以有多个爱好,所以一个人拥有爱好ID的集合
*/
private List<Integer> hobbyList;
public List<Integer> getHobbyList() {
return hobbyList;
}
public void setHobbyList(List<Integer> hobbyList) {
this.hobbyList = hobbyList;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMale() {
return male;
}
public void setMale(int male) {
this.male = male;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isLive() {
return isLive;
}
public void setLive(boolean isLive) {
this.isLive = isLive;
}
public int getFatherId() {
return fatherId;
}
public void setFatherId(int fatherId) {
this.fatherId = fatherId;
}
public int getMotherId() {
return motherId;
}
public void setMotherId(int motherId) {
this.motherId = motherId;
}
public int getLoverId() {
return loverId;
}
public void setLoverId(int loverId) {
this.loverId = loverId;
}
public int getJobId() {
return jobId;
}
public void setJobId(int jobId) {
this.jobId = jobId;
}
public Person() {
super();
}
public Person(int id, String name, int male, int age, boolean isLive,
int fatherId, int motherId, int loverId, int jobId) {
super();
this.id = id;
this.name = name;
this.male = male;
this.age = age;
this.isLive = isLive;
this.fatherId = fatherId;
this.motherId = motherId;
this.loverId = loverId;
this.jobId = jobId;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", male=" + male + ", age="
+ age + ", isLive=" + isLive + ", fatherId=" + fatherId
+ ", motherId=" + motherId + ", loverId=" + loverId + ", jobId="
+ jobId + "]";
}
}
package beantest.dao;
import java.util.List;
/**
*单表 CRUD的类
*/
public class BaseDao<T> {
/**
* 操作哪个表
*/
private List<T> table;
public BaseDao(List<T> table) {
super();
this.table = table;
}
/**
* 插入
*/
public void insert(T t){
table.add(t);
}
/**
* 查询
*/
public T query(int id){
return table.get(id);
}
/**
* 修改
*/
public void update(T t,int id){
table.set(id, t);
}
/**
* 删除
*/
public T delete(int id){
return table.remove(id);
}
}
package beantest.db;
import java.util.ArrayList;
import java.util.List;
import beantest.bean.Hobby;
import beantest.bean.Job;
import beantest.bean.Person;
import beantest.util.Dectionary;
/**
*数据库,每个数据库的记录的id从0开始
*
*/
public class DataBase {
public static List<Person> personDb=new ArrayList<Person>();
public static List<Job> jobDb=new ArrayList<Job>();
public static List<Hobby> hobbyDb=new ArrayList<Hobby>();
//初始化数据库并设置关联
static{
//初始化person数据库
Person p0=new Person(0, "老王的父亲", Dectionary.Male, 60, Dectionary.Live, -1, -1, 1,-1);
Person p1=new Person(1, "老王的母亲", Dectionary.Female, 60, Dectionary.Live, -1, -1, 0,-1);
Person p2=new Person(2, "老李的父亲", Dectionary.Male, 60, Dectionary.Live, -1, -1, 3,-1);
Person p3=new Person(3, "老李的父亲", Dectionary.Female, 60, Dectionary.Live, -1, -1, 2,-1);
Person p4=new Person(4, "老王", Dectionary.Male, 40, Dectionary.Live, 0, 1, 5,0);
Person p5=new Person(5, "老李", Dectionary.Female, 40, Dectionary.Live, 2, 3, 4,1);
Person p6=new Person(6, "儿子", Dectionary.Male, 15, Dectionary.Live, 4, 5, -1, 2);
personDb.add(p0); personDb.add(p1); personDb.add(p2); personDb.add(p3);
personDb.add(p4); personDb.add(p5); personDb.add(p6);
//初始化job数据库
Job job0=new Job(0, "教师");
Job job1=new Job(1, "会计");
Job job2=new Job(2, "上中学");
jobDb.add(job0);jobDb.add(job1);jobDb.add(job2);
//初始化hobby数据库
Hobby h0=new Hobby(0, "太极拳");
Hobby h1=new Hobby(0, "兼职讲课");
hobbyDb.add(h0);
hobbyDb.add(h1);
//设置爱好
List<Integer> wangList=new ArrayList<Integer>();
List<Integer> liList=new ArrayList<Integer>();
wangList.add(0);
liList.add(1);
p0.setHobbyList(wangList);
p1.setHobbyList(liList);
}
}
分享到:
[解决办法]
[解决办法]
顶楼主
顺便接点分
[解决办法]
太好了,顶完再细看
[解决办法]
收藏之,十分感谢!
[解决办法]
原来是这样
[解决办法]
对照你的看了一下musicstore:
1.logic分成了3个包:admin, cart, catalog
2.数据库只有一个包:data
其中 UserDB, ProductDB 等属于dao; ConnectionPool,DBUtil,SQLUtil等属于db;
3.初始化数据库是用sql文件生成的,
[解决办法]
[解决办法]
楼主这是要讲明白什么吗?
[解决办法]
[解决办法]
加快进度:我认可这种态度。看的多了,有些东西自然而然就懂了。而且可以知道哪些是最新的正在应用的技术
[解决办法]
能讲讲开发的顺序吗?先搞哪个包?
[解决办法]
一点改动:
public void personDoSth(int personId ){
Person p=personDao.query(personId);
for ( Integer i: p.getHobbyList()){
Hobby h=hobbyDao.query(i);
System.out.println(p.getName()+ " like"+ h.getName());
}
}
lc.personDoSth(4);
lc.personDoSth(5);
Hobby h0=new Hobby(0, " swiming");
Hobby h1=new Hobby(1, " part-time teacher");
Hobby h2=new Hobby(2, " baseball");
Hobby h3=new Hobby(3, " hiking");
hobbyDb.add(h0);
hobbyDb.add(h1);
hobbyDb.add(h2);
hobbyDb.add(h3);
List<Integer> wangList=new ArrayList<Integer>();
List<Integer> liList=new ArrayList<Integer>();
wangList.add(0);
liList.add(0);
liList.add(1);
liList.add(2);
p4.setHobbyList(wangList);
p5.setHobbyList(liList);
String userName=request.getParameter("userName");
String password=request.getParameter("password");
UserInfo userInfo=userInfologic.login(userName,password);
写段代码贝
public UserInfo login(String userName,String password){
UserInfo userInfo=userInfoDao.queryByUserName(userName);
// 执行密码验证
checkPassword(password, userInfo.getPassword());
return userInfo;
}
[解决办法]
写的不错,顶起
[解决办法]
不错,思路很好
[解决办法]
[解决办法]
很不错 看看
[解决办法]
你是把程序设计从阳春白雪拖回到下里巴人了。。企业里的程序设计确实就那么点东西。
[解决办法]
支持!。 越纠结 只会越来越纠结, 纠结到不能再纠结, 那么恭喜你, 你终于理解了!。 还是要跟进度
[解决办法]
还没看,觉得有点高深,但应该会很有用的样子,csdn是个好地方,希望找到自己想要的东西
[解决办法]
对LZ只有一个字,通透!!!
[解决办法]
很好,很强大,值得研究,琢磨,品味。谢谢
[解决办法]
很不错啊。。。。
[解决办法]
很好的资料,值得收藏。
[解决办法]
好东西啊,值得收藏
[解决办法]
很好,不错!
[解决办法]
[解决办法]
好东西,对新手很有用处
[解决办法]
lz思路很清晰,对企业级开发的分层思想感觉很有理解
[解决办法]
顶楼主,非常棒的讲解。
[解决办法]
屌!进度请跟上!!!
[解决办法]
接分。。。
什么叫月经题
[解决办法]
楼主,为毛我看到有些教材上面说DAO是一个接口呢?还要,vo也是表示的bean吧?
[解决办法]
lz的那个设计好厉害哦,为什么我读了那段吗描述却是一片空白呢?请问lz是如何思考 如何达到这种境界的!
[解决办法]
大神 膜拜 先收藏
[解决办法]
学习一下,标记。
------解决方案--------------------
[解决办法]
Person p3=new Person(3, "老李的父亲", Dectionary.Female, 60, Dectionary.Live, -1, -1, 2,-1);
此处是不是“父亲”应该改为“母亲”,不小心看到了,就提一下,望LZ见谅哈!楼主很给力!!!
[解决办法]
我是来接分的
[解决办法]
[解决办法]
很好的东西,留着回去慢慢看
[解决办法]
学习学习一下。
[解决办法]
很好的东西啊,学习了
[解决办法]
我落后了,看来要更新一下自己的知识结构了。
[解决办法]
public Hobby(int id, String name) {
super();
this.id = id;
this.name = name;
}