Я полагаю, поскольку это настольное приложение, это приложение на основе пользовательского интерфейса. Так что архитектура MVC здесь наиболее подходит. Также я полагаю, вам придется использовать Java-бины для асинхронного доступа к модели.
Сначала определите модель со всеми необходимыми определениями.
скажем
class person
{
public PropertyChangeSupport propertyChange = new PropertyChangeSupport(this);
private String firstName;
private String middleName;
private String lastName;
private int gender;
private Integer age;
.
.
set Fname(String firstName)
{
propertyChangeSupport.firePropertyChange("firstName",this.firstName,this.firstName = firstName);
}
.
.
.
public void setPropertyChange(PropertyChangeSupport propertyChange) {
this.propertyChange = propertyChange;
}
public PropertyChangeSupport getPropertyChange() {
return propertyChange;
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChange.removePropertyChangeListener(listener);
}
}
Теперь нам нужен поставщик модели, который будет одноэлементным.
class PersonMOdelProvider
{
private static List<Person> lst ;
private static PersonMOdelProvider content;
private PersonMOdelProvider()
{
// Get data from data base layer.
lst = new ArrayList<Person>();
//load the list from database
}
public static PersonModelProvider getInstance()
{
if (content!=null) return content;
content = new PersonMOdelProvider();
return content;
}
.
.
.
set ... get methods for binding db with model.
}
Теперь в части пользовательского интерфейса сначала нужно получить экземпляр поставщика модели и передать все дальнейшее взаимодействие через поставщика модели.