实训阶段知识总结和归纳(二)
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); } }
总结
通过本次架构,对业务的各个方面有一点了解,希望能够更多的接触更多的开源项目去领悟不同架构和设计理念,代码的规范书写和对未来的一些方向,都希望在接下来的学习中有涉及到。相关文章推荐
- 实训阶段知识总结和归纳(一)
- HP实训软件测试第一阶段测试基础知识总结
- [转Iphone]iphone开发阶段总结(一) 基础知识
- 数据库基础知识归纳总结
- 惠普实训第一阶段总结
- 惠普实训第一阶段学习总结
- 惠普实训第一阶段总结
- 项目开发实训第一阶段总结
- 第一阶段知识总结及问题反馈
- 第一阶段测试基础知识总结(1)
- 惠普实训第一阶段总结
- 惠普实训第一阶段总结
- 黑马程序员_学习日记2_有关C#基础知识总结归纳之对象和类型
- SQL Server数据库基础知识归纳总结
- 一直在实训,写的实训日志很多,以及知识的总结,但是没有人看,感觉自己的分享是多余
- 第一阶段测试基础知识总结(2)
- [转Iphone]iphone开发阶段总结(二)代码知识
- Java Web 重点知识归纳总结
- Adroid Intent Task的相关知识总结与归纳
- 实训第一阶段总结