Java MVC之 Model层

来自CloudWiki
跳转至: 导航搜索

Model层的作用

  • M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

(该层最好用接口写,现在的内容实际是业务逻辑层的部分内容) Java8-1.png

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程序设计