jQuery 版本购物车(融入设计模式)

jQuery 版本购物车(融入设计模式)

1. 介绍

1.1 功能

  • 显示购物列表、加入购物车、从购物车删除

1.2 用到的设计模式

  • 工厂模式
    • $('XXX'),创建商品
  • 单例模式
    • 购物车
  • 装饰器模式
    • 打点统计
  • 观察者模式
    • 网页事件、Promise
  • 状态模式
    • 添加/删除购物车
  • 模板方法模式
    • init(),统一的方法渲染
  • 代理模式
    • 打折商品信息处理

1.3 UML 演示

在这里插入图片描述

2. 代码演示

2.1 代码目录

在这里插入图片描述

2.2 api

  • list.json
    [
      {
         
        id: 1,
        name: '《JS高级程序设计》',
        price: 87,
        discount: 1
      },
      {
         
        id: 2,
        name: '《新零售》',
        price: 42,
        discount: 1
      },
      {
         
        id: 3,
        name: '《干法》',
        price: 56,
        discount: 0
      },
      {
         
        id: 4,
        name: '《剑指offer》',
        price: 32,
        discount: 0
      }
    ]
    

2.3 config

  • config.js
    export const GET_LIST = '../api/list.json'
    

2.4 List

  • CreateItem.js

    import Item from './Item.js'
    
    //优惠商品处理逻辑
    function createDiscount(itemData) {
         
      //代理模式
      return new Proxy(itemData, {
         
        get: function(target, key, receicer) {
         
          if (key === 'name') {
         
            return `${
           target[key]}【折扣】`
          }
          if (key === 'price') {
         
            return Math.floor(target[key] * 0.8 * 100) / 100
          }
          return target[key]
        }
      })
    }
    
    //工厂模式
    export default function(list, itemData) {
         
      if (itemData.discount) {
         
        itemData = createDiscount(itemData)
      }
      return new Item(list, itemData)
    }
    
  • Item.js

    import $ from 'jquery'
    import getCart from '../ShoppingCart/GetCart.js'
    import StateMachine from 'javascript-state-machine'
    import {
          log } from '../util/log'
    
    export default class Item {
         
      constructor(list, data) {
         
        this.list = list
        this.data = data
        this.$el = $('<div>')
        this.cart = getCart
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值