購物車架構 一:新增商品到購物車
不管是springmvc,struts2 還是需要有好的設計思想,這樣才能將任務完成好。
不光是要考慮架構設計適合合理,是否具有擴充套件性,可讀性,可維護性。
可擴充套件性指的是加入有另外一個產品加入了購物車,是不是能快速的進行開發,如果有和
其他產品不同的屬性是否能快速相容。
可讀性指的是程式的起名是否恰當,比如一個命名太長或者是太短,或者是無關意義的欄位
可能會影響程式的閱讀,還有適當的註釋是非常有必要的。比如方法的註釋儘量用 /*/
這種方式 ,這種方式在程式呼叫方法的時候會將註釋顯示出來,而不用去直接去找程式碼了。
註釋儘量佔程式的30%-40%
可維護性:日誌的新增也是非常有必要的,線上的環境很難去除錯,只能通過一些日誌資訊,去追溯之前的問題。那麼日誌的新增就顯得尤為重要。一種是檔案的方式儲存,另外一種方式是通過資料庫儲存。
這兩種都有優點和缺點,重點是看這個是不是特別重要。
其實購物車設計有很多的辦法,將購物車抽象成一個可以任何產品都可以通用的購物車。
一個圖書產品action 都去繼承CommonGenericAction,所有的產品都呼叫父類的方法,去加入到購物車。
流程:
1:首先判斷使用者是否登陸,沒有登陸,則將物件加入到cookie中。
因為cookie如果存入產品過多,cookie一個引數其實是有限制的。
所以儘量將引數轉換為json格式,然後引數的key值儘量簡化,或者用一個字母來代替。
ShopCartCookiesVO cartCookies = new ShopCartCookiesVO();
可以對構造一個物件,這樣新增引數會比較方便。
引數中會構造一個UUID,這個是通過程式生成,然後去資料庫中查詢是否有相同的UUID,
如果不存在,則不會去繼續生成UUID ,這個地方可以用do while迴圈,一直到UUID的生成。
2:然後將ShopCartCookiesVO 多個產品加入到List中 ,
shopCartList.addAll(newAddlist);
如果使用者沒有登陸,則轉化為json,並對將json進行加密,
String encodeJson = URLEncoder.encode(json.toString());
放入到cookie中。
this.getResponse().addCookie(shopCartListCookie);
當cookies超過最大容量,則提醒。
log.warn(“購物車商品資訊超過Cookie最大容量{4095}”);
3:當用戶登陸過了,
則將物件
ShopCart shopCart = new ShopCart();
將ShopCartCookiesVO 裡面的資料set到shopCart中,然後呼叫進行插入操作。