Java MVC之 Model层
来自CloudWiki
Model层的作用
- M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。
Model层的编写
客户端
管理端
业务逻辑层:UserService
package service; import dao.*; import entity.*; //import exception.UserException; public class UserService { /** * 用户集类(用于存储用户 */ private UserDao userset = null; public UserService() { userset = new UserDaoMap(); } /** * 用于向用户集添加用户 */ public void addUser(User user){ userset.addUser(user); System.out.println("用户 "+user.getName() +" 注册成功"); System.out.println(); } /** * 查询仓库中的用户 */ public void queryUser( ){ System.out.println("本店现有如下用户:"); userset.queryUser(); System.out.println(); } /** * 登录验证,判断用户名与密码是否一致 * * @param uid 用户输入的登录账号 * @param pwd 用户输入的登录密码 * @return 登录信息有效:返回用户对象,否则返回NULL */ public boolean login(String name, String pwd) { //用户名为空,密码为空 //try{ if(!userset.hasUser(name)){ //throw new UserException("用户 "+name+":该用户不存在"); System.out.println("用户 "+name+":该用户不存在"); return false; }else if(!userset.verify(name, pwd)){ //throw new UserException("用户 "+name+":用户名或密码错误"); System.out.println("用户 "+name+":用户名或密码错误"); return false; } System.out.println("用户 "+name+" 登陆成功!"); //}catch(UserException e){ //System.out.println(e.toString()); //return false; //} return true; } public static void main(String[] args) { UserService us =new UserService(); User u1=new User("zhangliu","456");//这里可能会遇到构造方法参数不符的问题,重新修改一下构造方法 us.addUser(u1); us.queryUser( ); us.login("zhangliu","456"); } }
业务逻辑层:GoodsService
package service; import java.util.ArrayList; import dao.*; import entity.*; import exception.GoodsException; /** * 这个类处理与商品有关的业务逻辑 */ public class GoodsService { private GoodsDao dbset ; public GoodsService() { dbset = new GoodsDaoMem(); } /** * 向数据仓库中批量添加商品 * @param goods 向仓库中添加商品(数组) * @return 值为空 */ public void addGoods(Goods [] goods){ System.out.println("现在开始向库中添加商品 "); for(int i=0;i<goods.length;i++){ this.addGoods(goods[i]); } System.out.println("所有商品添加完毕 "); System.out.println(); } /** * 向数据仓库中添加商品 * @param g 向仓库中添加的商品 * @return 值为空 */ public void addGoods(Goods g){ int num = g.getNumber(); if(dbset.hasGoods(g)){//如果该商品已经存在,则追加商品数目 dbset.modifyGoods(g, num); }else{//如果该商品不存在,则添加这个商品到数据库 dbset.addGoods(g); } System.out.println(" 商品 "+g.getName() +" 成功入库"); } /** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public void delGoods(Goods g) { System.out.println("现在开始向库中删除商品 "); try{ if(dbset.hasGoods(g)){ dbset.delGoods(g); System.out.println(g.getName()+" 已删除完毕!"); }else{ throw new GoodsException("要删除的商品"+g.getName()+" 不存在哦!"); //System.out.println("要删除的商品"+g.getName()+" 不存在"); } System.out.println(); }catch(GoodsException e){ System.out.println(e.toString()); } } /** * 向数据仓库中删除商品 * @param g 向仓库中删除的商品 * @return 值为空 */ public void delGoods(String id) { try{ System.out.println("现在开始向库中删除商品 "); if(dbset.hasGoods(id)){ dbset.delGoods(id); System.out.println("商品"+ id+" 已删除完毕!"); }else{ throw new GoodsException("要删除的商品"+id+" 不存在哦!"); //System.out.println("要删除的商品"+g.getName()+" 不存在"); } System.out.println(); }catch(GoodsException e){ System.out.println(e.toString()); } } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public ArrayList<Goods> queryGoods( ){ ArrayList<Goods> g= dbset.queryGoods(); System.out.println("商品成功查询!\r\n"); return g; } /** * 查询仓库中的商品 * * @param 值为空 * @return 值为空 */ public Goods queryGoods(String id ) { Goods g= dbset.queryGoods(id); if(g==null){ System.out.println("要查找的商品"+id+" 不存在哦!"); return null; } System.out.println("商品成功查询!\r\n"); return g; } /** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param n 商品的数量增加或减少的数量 * @return 值为空 */ public void modifyGoods(Goods g,int n) { System.out.println("现在开始修改商品 "+g.getName()+ " 的数量"); try{ if(!dbset.hasGoods(g)){//如果查不到这个商品 throw new GoodsException("要修改的商品"+g.getName()+" 不存在哦!"); //System.out.println("要修改的商品"+g.getName()+" 不存在"); }else {//查到这个商品了,可以做进一步操作 int s = g.getNumber();//该商品现在的库存数 if(n>0){//如果n>0 ,库存实际上是增加了 dbset.modifyGoods(g, n); }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 dbset.modifyGoods(g, n); }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); } System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); System.out.println(); } }catch( GoodsException e){ System.out.println(e.toString()); } } /** * 向数据仓库中修改商品的数量 * @param g 仓库中待修改的商品 * @param n 商品的数量增加或减少的数量 * @return 值为空 */ public void modifyGoods(String id,int n) { System.out.println("现在开始修改商品 "+id+ " 的数量"); try{ if(!dbset.hasGoods(id)){//如果查不到这个商品 throw new GoodsException("要修改的商品"+id+" 不存在哦!"); }else {//查到这个商品了,可以做进一步操作 Goods g=dbset.queryGoods(id); int s = g.getNumber();//该商品现在的库存数 if(n>0){//如果n>0 ,库存实际上是增加了 dbset.modifyGoods(g, n); }else if(s +n >=0){//如果n<0,s+n>=0,库存实际上是减小了,但仍是正数 dbset.modifyGoods(g, n); }else{//对应s +n <0的情况,要减去的数目比实际的库存数还要大,操作错误。 throw new GoodsException(g.getName()+" 待删除数量已超过该商品库存数哦!"); //System.out.println(g.getName()+" 待删除数量已超过该商品库存数!"); } System.out.println(g.getName()+" 的库存增加了 " + n+ " 个"); System.out.println(); } }catch( GoodsException e){ System.out.println(e.toString()); } } }
项目源文件请见:
http://cloud.sict.edu.cn:80/link/CED3A93616F3973EBBBBCC4427DE32B1
返回 Java程序设计