This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Hi, all. I'm getting a little bit confused with the assignment specs. It explicitely says that "...This implementation should include a class that implements the same public methods as the suncertify.db.Data class, although it will need different constructors to allow it to support the network configuration...". I don't see any reasons creating such local class because most of the methods exposed in it won't ever be needed on the client. My original idea was to create a proxy (facade) remote interface with more general methods like "bookFlight()" in it that represent application logic. Of cource, the implementation will rely on the Data class to fullfill the processing requirement, but that will happen on the server side, thus no client analogue of Data class for remote communication is required. Why would I need, for example, "lock/unlock" methods exposed via interface? They don't seem to be invoked by client separately, only through larger "bookFlight" transaction. Am I missing something? Please, share your thoughts on the matter.
Hi, Since the specification states that you should implement this class then you would probably be wise to do so. However, in my view there is nothing stopping you implementing your facade to call the methods of this class. That way you are meeting the specification and your own design choices. In fact this is probably the way I am going to implement the client side. I hope this helps, Cheers, Steve
Andrew, In your situation you will then be locking in local and remote mode. In local mode there is no server and no concurrent users, just one user accessing one db.db file, do you need locking in that local mode? Also you will find that if you want to use the LockManager that many people post about, you will probably need that interface/implementation seperation, to make it really easy to do. Hope that gives you food for thought. Mark