2014-06-12 2 views
0

Je cherche un modèle de conception de logiciel qui résout les problèmes d'éditer un document par différents utilisateurs en même temps. Je veux l'utiliser pour une application Android. Jusqu'à présent, je viens de trouver le Google Realtime API mais cela ne semble pas ce que je recherche parce que c'est pour les sites Web. Actuellement, je pense que je devrais utiliser le observer pattern et une méthode pour vérifier si le changement a été fait et où.Modèle de conception de logiciel pour l'édition multi-utilisateur en "temps réel"

Répondre

3

Envisagez d'implémenter votre conception à l'aide de l'interface ReadWriteLock. Si les lecteurs doivent obtenir le document mis à jour (si quelqu'un a mis à jour pendant une autre lecture), vous pouvez utiliser le modèle d'observateur pour avertir les lecteurs une fois que le document a été mis à jour par l'auteur.

public class Document { 

    private ReadWriteLock lock; 
    // other fields and methods are omitted for brevity 

    public Document(){ 
     lock=new ReentrantReadWriteLock(); 
    } 

    public void write(Object msg){ 
    lock.writeLock().lock(); 
    // write document 
    } 

    public Object read(){ 
    lock.readLock().lock(); 
    // write document 
    return "reading"; 
    } 
} 


public class Reader implements Runnable { 

    private Document document; 

    public Reader (Document document){ 
     this.document=document; 
    } 

    @Override 
    public void run() { 
     document.read(); 
    } 
} 


public class Writer implements Runnable { 

    private Document document; 
    private Object msg; 

    public Writer(Document document,Object msg){ 
     this.document=document; 
     this.msg=msg; 
    } 

    @Override 
    public void run() { 
     document.write(msg); 
    } 
} 

Pour plus de détails sur ReadWriteLock jeter un oeil à: http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html

Questions connexes