Java互评-OO之接口-DAO模式代码阅读及应用

相关问题及回答

  1. StudenDaoListImpl.java与StudentDaoArrayImpl.java有何不同?
    • 答:StudenDaoListImpl.java通过List列表对StudentDao接口中方法的编写而StudentDaoArrayImpl.java则通过数组对StudentDao接口中方法的编写。
  2. StudentDao.java文件是干什么用的?为什么里面什么实现代码都没有?
    • 答:StudentDao.java只定义StudentDao接口,并且声明该接口相应的方法。
  3. 使用搜索引擎搜索“Java DAO”,选出几句你能看懂的、对你最有启发的话。请结合接口知识去理解。
    • 答: 语句1:“DAO 模式,通俗来讲,就是将数据库操作都封装起来。” 语句2:“隔离了数据访问代码和业务逻辑代码。” 个人理解:接口相当于一个标准,DAO对数据的操作方法可能不同,但都要通过接口这个标准,所以最终的结果都是一样的。
  4. 尝试运行Test.java。根据注释修改相应代码。结合参考代码回答使用DAO模式有什么好处?
    • 答:DAO模式只关心数据的写入跟读取。即使有不同的实现方法,但是最终的结果都是一样的。有利于程序各个部分的分工,提高程序的灵活性。

5.编写一些使用DAO模式的代码。比如使用文件作为购物车存储底层。

  • 商品GoodsDAO接口
package shoppingCartStorage;

public interface GoodsDAO {
	public boolean addGoods(Goods goods);
	public Goods getGoodsByName(String name);
	public Goods getGoodsByCode(String code);
	public void diplayAllGoods();
}
  • 商品类Goods
package shoppingCartStorage;

public class Goods {
	private String name;
	private String code;
	private double price;
	public Goods(String name,String code,double price) {
		this.code=code;
		this.name=name;
		this.price=price;
	}
	public Goods() {
		
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getCode() {
		return code;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	@Override
	public String toString() {
		return "Goods [name=" + name + ", code=" + code + ", price=" + price + "]";
	}
	
}

  • 商品的List实现
package shoppingCartStorage;

import java.util.ArrayList;
import java.util.List;

public class GoodsDAOList implements GoodsDAO{
	
	private List<Goods> goods = new ArrayList<Goods>();
	
	@Override
	public boolean addGoods(Goods good) {
		goods.add(good);
		return true;
	}

	@Override
	public Goods getGoodsByName(String name) {
		Goods temp=null;
		for (Goods e : goods) {
			if(e.getName().equals(name))temp=e;
		}
		return temp;
	}

	@Override
	public Goods getGoodsByCode(String code) {
		Goods temp=null;
		for (Goods e : goods) {
			if(e.getCode().equals(code))temp=e;
		}
		return temp;
	}

	@Override
	public void diplayAllGoods() {
		for(Goods e:goods){
			if (e != null)
				System.out.println(e);
		}
	}

}
  • 测试代码
package shoppingCartStorage;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Goods [] goods=new Goods[5];
		goods[0]=new Goods("Java学习笔记","BOOK001",35.1);
		goods[1]=new Goods("黑色签字笔","PEN001",3.5);
		goods[2]=new Goods("算法设计与分析","BOOK002",20.6);
		goods[3]=new Goods("鼠标","MOU001",99.9);
		goods[4]=new Goods("百草味","FOOD001",19.9);
		
		GoodsDAO gdm = new GoodsDAOList();
		
		System.out.println("======================读入商品数据======================");
		for(Goods e:goods){
			if (!gdm.addGoods(e)){
				System.out.println("添加商品失败");
			}else{
				System.out.println("插入成功!!");
			}
		}
		System.out.println("======================显示所有商品======================");
		gdm.diplayAllGoods();
		System.out.println("========================查询商品========================");
		Goods temp = gdm.getGoodsByName("鼠标") ;
		if(temp == null){
			System.out.println("查询无果");
		}else{
			System.out.println("查询成功!");
			System.out.println(temp);
		}
		temp = gdm.getGoodsByCode("BOOK001") ;
		if(temp == null){
			System.out.println("查询无果");
		}else{
			System.out.println("查询成功!");
			System.out.println(temp);
		}
	}
}
  • 测试结果
原文地址:https://www.cnblogs.com/gdlkblue/p/13873020.html