The case is a data service provider serving data to many client.
Usually it maintain only one set of data object in the service which is called value object. And return each set of data object to each request client and these object is so-called business object.
Every business object has a reference to the coresponding value object. And it delegate the data getter and setter to the value object . So the business object will do the validation and security checking for the value data.
Because all the business object refer to only one value object. So each time the value object is updated by one instance of the business object. the others will also know because they refer to the same value object. By this mean there is no need to care about the staleness of data.
Sample
Class GoodsBO{
private GoodsVO vo = null;
public void setName(String name){
//do some security checking
vo.setName(name);
}
public String getName(){
return vo.getName();
}
}
Interface GoodsVO{
public void setName(String name);
public String getName();
}