1. 程式人生 > >利用中介者模式與觀察者解決購物車與商品列表聯動問題

利用中介者模式與觀察者解決購物車與商品列表聯動問題

由於專案保密性只介紹出現的問題和解決方案的思路。

說明:


1 商品分類列表:顯示商品分類名稱以及此分類下放入購物車商品的總數量。

2 商品列表:顯示商品資訊和兩個操作按鈕“+”,“-”以及加入購物車數量。

3 購物車列表:顯示購物車商品資訊和兩個操作按鈕“+”,“-”以及數量。

4 搜尋列表:顯示商品資訊和兩個操作按鈕“+”,“-”以及加入購物車數量。

問題:商品列表、購物車列表、搜尋列表都可以將商品新增到購物車,當一方操作如何將其他列表已加入購物車商品的數量進行同步?

最初我採用一方操作通知其他三方(如上圖),先不說如何實現假如又出現一個列表這層關係就變成了一對四,物件關係更加錯綜複雜難以維護起來。

為此我找尋解決此類問題的最佳解決方案中介者模式+觀察者模式

如圖所示四個列表中間多了一個商品管理也就是中介者,現在的關係就變成了一對一,當一個列表數量改變只要告訴商品管理就好了他會通知其他列表更新(使用觀察者模式)。

程式碼思路

1. 商品管理為單例並維護商品集合(所有商品列表的資料來源)。

2. 商品管理定義通知更新回撥介面,並維護一組回撥介面List。(所有商品列表實現此介面並新增進來)

2. 商品管理提供add(Godd good) ,remove(Good good)方法(列表操作時呼叫)並在最後呼叫updateNotify()。

3. updataNotify()方法迭代回撥介面List並執行回撥方法。

4. 所有的列表在回撥方法裡進行更新Adapter.notifyDataSetChanged()。

這樣整個模組的思路以及類與類的關係就清晰了,維護起來也方便。

相關推薦

中介模式觀察模式區別?

observer server serve 有一個 obs 交互 進行 強調 一個 中介者(mediator)強調的是同事(colleague)類之間的交互 而觀察者(observer)中的目標類(subject)強調是目標改變後對觀察者進行統一的通訊 兩者非常相同的一點就

行為型設計模式(職責鏈模式,命令模式中介模式觀察模式,訪問者模式

職責鏈模式 主要用於使多個物件都有機會處理請求,避免請求的的傳送者和接受者之間的耦合關係。在現實生活中我們多數遇到的是不純的責任鏈模式即每個物件都處理請求的一部分後再交給下家。而純的職責鏈模式則要求對於一個請求,要不處理要不就交給下家。具體理解呢。我們可以想一下“擊鼓傳花”

Unity中設計模式應用(二):結合中介模式觀察模式

一.觀察者模式簡介 觀察者模式(又被稱為釋出-訂閱(Publish/Subscribe)模式,屬於行為模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某一個主題物件。當這個主題物件的狀態發生變化時,會通知所有此狀態的觀察者,這些觀察者會執行相

EventBus事件總線框架(發布/訂閱模式觀察模式

編譯 exe 組件間通信 之間 對象 int instance vol 高效率 一、 android應用內消息傳遞的方式: 1. handler方式-----------------不同線程間傳遞消息。 2. Interface接口回調方式-------任意兩個對象。 3.

釋出訂閱模式觀察模式總結

/** * 觀察者模式定義:Subject維持一系列它的物件Observer,當有關狀態發生變更時Subject物件則會通知一系列Observer物件進行更新。 * 在Subject物件添加了一系列Observer物件之後,Subject維持一系列Observer物件,

Java設計模式, 單例模式,工廠模式,建造模式觀察模式

  1、單例模式            寫法:    懶漢式                 /**     * 懶漢模式     * 宣告一個靜態物件,並且在第一次呼叫getInstance 方法時進行初始化     * Created by Bill on 2017/12

大型Java進階專題(八) 設計模式之介面卡模式、裝飾模式觀察模式

## 前言 ​ 今天開始我們專題的第八課了。本章節將介紹:三個設計模式,介面卡模式、裝飾者模式和觀察者模式。通過學習介面卡模式,可以優雅的解決程式碼功能的相容問題。另外有重構需求的人群一定需要掌握裝飾者模式。本章節參考資料書籍《Spring 5核心原理》中的第一篇 Spring 內功心法(Spring中常用

利用中介模式觀察解決購物車商品列表聯動問題

由於專案保密性只介紹出現的問題和解決方案的思路。 說明: 1 商品分類列表:顯示商品分類名稱以及此分類下放入購物車商品的總數量。 2 商品列表:顯示商品資訊和兩個操作按鈕“+”,“-”以及加入購物車數量。 3 購物車列表:顯示購物車商品資訊和兩個操作按鈕“+”,“-”以及

中介模式觀察模式

中介者模式 Mediator(中介者)模式是行為模式之一,在Mediator模式中,類之間的互動行為被統一放在Mediator的物件中,物件通過Mediator物件同其他物件互動,Mediator物件起著控制器的作用。   用一箇中介物件來封裝一系列的物件互動,中介者使各物件不需要顯示

Unity/C#基礎複習(5) 之 淺析觀察中介模式在遊戲中的應用delegate原理

參考資料 【1】 《Unity 3D指令碼程式設計 使用C#語言開發跨平臺遊戲》陳嘉棟著 【2】 @張子陽【C#中的委託和事件 - Part.1】 http://www.tracefact.net/tech/009.html 【3】 @張子陽【C#中的委託和事件 - Part.2】 http://www.t

Java事件監聽機制觀察設計模式

idea demo1 script 操作 alt face ner over 方法 一. Java事件監聽機制 1. 事件監聽三要素: 事件源,事件對象,事件監聽器 2. 三要素之間的關系:事件源註冊事件監聽器後,當事件源上發生某個動作時,事件源就會調用事件監聽的一個方法,

Swift 中的設計模式 #2 觀察模式備忘錄模式

作者:Andrew Jaffee,原文連結,原文日期:2018-08-06 譯者:jojotov;校對:Forelax,pmst;定稿:Forelax 本次教程是 AppCoda 上週開啟 的設計模式系列的第二期。在軟體設計領域的四位大師級人物(GoF,又稱“四人幫”或“Gang of Four”

多播委託觀察模式聯合使用,以及委託事件的區別

首先我們先看一下多播委託: 使用委託時,首先我們宣告委託,委託語法一共有四種類型,分別時有參,無參,以及有無引數返回值。 1 public class DelegateShow //: System.MulticastDelegate,多播委託 2 { 3 public del

設計模式觀察模式——利用java中提供的觀察實現

java實現與自己實現的對比 一、不需要再定義觀察者和目標的介面了,JDK幫忙定義了 二、具體的目標實現裡面不需要再維護觀察者的註冊資訊了,這在Java中的Observable類裡面已經幫忙實現好了。 三、觸發通知的方式有一點變化,要先呼叫setChanged方

設計模式觀察模式事件委託

        觀察者模式:                 定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某個主題物件。這個主題物件在狀態發生變化時,會通知所有觀察者物件,使它們能夠自己更新自己。           觀察者結構模式圖:               

java設計模式之——策略模式、模板方法模式觀察模式、迭代子模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式中介模式、直譯器模式(行為型)【讀書筆記】

一、策略模式           定義:定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到演算法的客戶。           使用場景:策略模式是一種定義一系列演算法的方法,從概念上看,所有的這些演算法完成的都是相同的工作,只是實現不

推拉模式觀察模式(未完待續)

推拉模式與觀察者模式 推(push)模式是一種基於客戶器/伺服器機制、由伺服器主動將資訊送到客戶器的技術。在push模式應用中,伺服器把資訊送給客戶器之前,並沒有明顯的客戶請求。push事務由伺服器發起。push模式可以讓資訊主動、快速地尋找使用者/客戶器,資訊的主動性和實

觀察模式(訂閱釋出模式),史上最簡單的觀察和被觀察理解;

說道觀察者模式,網路上有很多說法,什麼一對多了,還有什麼主題了,角色了,看著都煩,雖說要用官方的話來描述一些東西,但是太官方的話,有幾個能看得懂,特別是菜鳥,小白估計就直接看不下去了。這裡,我用最簡單的方式,幫助大街理解觀察者模式,我先用最通俗的方式來講解並附上程式碼,之後

觀察模式-貓捉老鼠(委託事件)

貓捉老鼠是一個典型的觀察者模式的實現案例,在其中加入委託與事件的程式實現,將會提高程式碼的一個可讀性,其下是程式碼實現: 建立一個Cat類: using System; using System.

javscript-發布訂閱模式觀察模式

splice reac 解決方法 狀態 square n) 方法 vsc 模式 設計模式”(Design Pattern)是針對編程中經常出現的、具有共性的問題,所提出的解決方法。著名的《設計模式》一書一共提出了23種模式。 發布訂閱模式 它定義了一種對象間一對多的關系