title: What is the best design pattern/architecture for my situation
body: <p>Firstly, hi everyone.</p>
  
  <p>So I will have an app running on an Android OS - this is what my clients will be using.</p>
  
  <p>I will have a server + database (typical back end backbone) which they all can connect to and retrieve info from - pretty much the repository for storing all data which the clients require in order for their Android app to run.</p>
  
  <p>So basically, can anyone suggest a design pattern/architecture which best suits the following requirement:</p>
  
  <p>(1) A client(A) is associated with a score, a simple int value lets say.(like football league)
       - If the client(A) is given a score from another client(B), client(A) score is updated</p>
  
  <p>(2) A client(A) can add many friends ( clients(C,D,E,...) ) to their league table
       -  client(A) league table and client(A) list of friends will be stored in a local database on client(A) android advice.</p>
  
  <p>(At this point, my view is that client(A) will have to connect to my server + database to retrieve updates (VERY IMPORTANT: The server will never contact them to let them know there is an update))</p>
  
  <p>(3) If one client(A) gives another client(B) a score, it is accrued to the client's(B) score.</p>
  
  <p>(4) Any clients(C,D,E,...) who have client(B) in their league table will need to be updated about this update ONLY WHEN THEY ACCESS THEIR APP AGAIN AND THEY CHECK FOR UPDATES, i.e: I only want the update to take place if the clients(C,D,E,...) connect to the server (as opposed to the <em>server</em> attempting to inform the client that their is an update awaiting them)</p>
  
  <p>NOTE: I am not using Google Cloud Messaging btw</p>
  
  <p>Hope that makes sense and thanks in advance for any comments</p>