That's bad design! And will result in a lot of ugly (and unnecessary) code (lots of ifs to see which instance variable you need to use). Both standalone mode and network mode should use the same interface.
I introduced a business service layer with just 2 methods (book & find). These methods could throw some business exceptions (room not found, room already booked,...) and also the RemoteException. This interface will have 2 implementations (1 for standalone, 1 for network) and both will use the Data class as an instance member (to invoke methods on). So you just need to develop 1 client and based on the startup parameter you'll use the appropriate (standalone or network) implementation to call methods on. That's a thin client approach (all logic happens on the server).
If you prefer a thick (fat) client approach you can do something similar, but your business service layer will contain similar methods than DBMain interface, but slightly adapted (throwing RemoteException, maybe using a POJO instead of
String[],...). The rest will be the same as the thin client approach.
So you'll end up with a nice design and don't have unnecessary, ugly code.
Hope it helps!
Kind regards,
Roel
[edit] seems the great and wise Roberto was 15min faster, but both responses lead to similar results (that's because great minds think alike
)