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