您的位置:首页 > 其它

实训阶段知识总结和归纳(二)

2016-08-27 20:14 204 查看
如果没有付出怎么去让自己有收获,加油,你是最无法或缺的哪一个

面向对象去设计和重构一个书店管理系统

1.首先应该想到的和定义的对象为书店,书,管理人员,借书人员,买书人员,他们之间的关系如下图

书店->书: 一个书店里有许多书
管理人员->书:一个管理人员负责所有的书籍的整理和买入和卖出
人-->借书 一个人可以借阅多本图书和购买多本图书


用图的方式去实现了一个基本的面相对象的各个业务逻辑,比如说可以简单实现一个人去书店去借书,然后在那个书店里面实现了书籍的入库和出库,用简单的方式实现了整个逻辑上的设计,在这里我们需要面向接口的去重构这个代码,再设计过程中尽量把抽象的对象类型和实体分开来,实现逻辑和业务的分离,当然说再多,其实最后要实现的还是功能,所以下面直接切入代码片段,在锻炼中才能够追求更好的代码和设计体验

代码实现

public class BusinessServiceImpl implements BusinessService {

private CategoryDao categoryDao = DaoFactory.getInstance().createDao("dao.impl.CategoryDaoImpl", CategoryDao.class);
private BookDao bookDao = DaoFactory.getInstance().createDao("dao.impl.BookDaoImpl", BookDao.class);
private UserDao userDao = DaoFactory.getInstance().createDao("dao.impl.UserDaoImpl", UserDao.class);
private OrderDao orderDao = DaoFactory.getInstance().createDao("dao.impl.OrderDaoImpl", OrderDao.class);
/* (non-Javadoc)
* @see service.impl.BusinessService#addCategory(domain.Category)
*/
public void addCategory(Category category){
categoryDao.add(category);
}

/* (non-Javadoc)
* @see service.impl.BusinessService#findCategory(java.lang.String)
*/
public Category findCategory(String id){
return categoryDao.find(id);
}

/* (non-Javadoc)
* @see service.impl.BusinessService#getAllCategory()
*/
public List<Category> getAllCategory(){
return categoryDao.getAll();
}

//添加书
public void addBook(Book book){
bookDao.add(book);
}

//获得书
public Book findBook(String id){
return bookDao.find(id);
}

//获得分页数据
public Page getBookPageData(String pagenum){
int totalrecord = bookDao.getTotalRecord();
Page page = null;
if(pagenum == null){
page = new Page(1,totalrecord);
}else{
page = new Page(Integer.parseInt(pagenum), totalrecord);
}
List<Book> list = bookDao.getPageData(page.getStartindex(), page.getPagesize());
page.setList(list);
return page;
}

public Page getBookPageData(String pagenum, String category_id){
int totalrecord = bookDao.getTotalRecord(category_id);
Page page = null;
if(pagenum == null){
page = new Page(1,totalrecord);
}else{
page = new Page(Integer.parseInt(pagenum), totalrecord);
}
List<Book> list = bookDao.getPageData(page.getStartindex(), page.getPagesize(), category_id);
page.setList(list);
return page;
}

public void buyBook(Cart cart, Book book) {
cart.add(book);
}

//注册用户
public void registerUser(User user) {
userDao.add(user);
}

public User findUser(String id){
return userDao.find(id);
}

public User userLogin(String username, String password){
return userDao.find(username, password);
}

//生成订单
public void createOrder(Cart cart, User user){
if(cart == null){
throw new RuntimeException("对不起,您还没有购买任何商品");
}
Order order = new Order();
order.setId(WebUtils.makeID());
order.setOrdertime(new Date());
order.setPrice(cart.getPrice());
order.setState(false);
order.setUser(user);
for(Map.Entry<String, CartItem> me : cart.getMap().entrySet()){
//得到一个购物项就生成一个订单项
CartItem citem = me.getValue();
OrderItem oitem = new OrderItem();
oitem.setBook(citem.getBook());
oitem.setPrice(citem.getPrice());
oitem.setId(WebUtils.makeID());
oitem.setQuantity(citem.getQuantity());
order.getOrderitems().add(oitem);
}
orderDao.add(order);
}

//后台获取所有订单信息
public List<Order> listOrder(String state) {
return orderDao.getAll(Boolean.parseBoolean(state));
}

//列出订单明细
public Order findOrder(String orderid) {
return orderDao.find(orderid);
}

//把订单置为发货状态
public void confirmOrder(String orderid) {
Order order = orderDao.find(orderid);
order.setState(true);
orderDao.update(order);
}

//获得某个用户的订单信息
public List<Order> listOrder(String state, String userid) {
return orderDao.getAll(Boolean.parseBoolean(state), userid);
}

//获取某个用户的订单信息
public List<Order> clientListOrder(String userid) {
return orderDao.getAllOrder(userid);
}
}


总结

通过本次架构,对业务的各个方面有一点了解,希望能够更多的接触更多的开源项目去领悟不同架构和设计理念,代码的规范书写和对未来的一些方向,都希望在接下来的学习中有涉及到。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 面向对象