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

如果没有付出怎么去让自己有收获,加油,你是最无法或缺的哪一个

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

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);
    }
}

总结

通过本次架构,对业务的各个方面有一点了解,希望能够更多的接触更多的开源项目去领悟不同架构和设计理念,代码的规范书写和对未来的一些方向,都希望在接下来的学习中有涉及到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值