“实时”中多用户编辑的软件设计模式

时间:2014-06-12 15:09:52

标签: java android design-patterns real-time multi-user

我正在寻找一种软件设计模式,它解决了不同用户同时编辑文档的问题。我想用它来安装Android应用程序。到目前为止,我刚刚找到了Google Realtime API,但这似乎不是我想要的,因为它适用于网站。目前我在想我应该使用observer pattern和一些方法来检查是否已经进行了更改以及是否在哪里。

1 个答案:

答案 0 :(得分:3)

考虑使用ReadWriteLock接口实现您的设计。如果读者应该获得更新的文档(如果有人在其他阅读时更新了),您可以使用观察者模式在作者更新文档后通知读者。

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);
    }
}

有关ReadWriteLock的更多详细信息,请查看: http://developer.android.com/reference/java/util/concurrent/locks/ReadWriteLock.html