That's a coin toss, or an educated gamble. Making a class a factory for itself is kind of a "least possible effort" design for the chance that you might need a factory. If you're more sure you'll need one, or already know that's your plan, go ahead and make a nice purpose-built one.
My method isRecordValid never returns false. If the record is valid, it will return true. Otherwise, it will just throw a RecordNotFoundException.
quote:
--------------------------------------------------------------------------------
Your user interface should be designed with the expectation of future functionality enhancements, and it should establish a framework that will support this with minimal disruption to the users when this occurs.
--------------------------------------------------------------------------------
The thin client does not do this. Any enhancement to the capabilities of the client would require modifications be made to the server and possibly all existing clients.
With the fat client approach the server has all the functionality required to provide access to the data and thus an enhanced client can run concurrently with the older version of the client. I actually have several client programs that can access the same server. The maintenance and testing client allows all database actions, inuding locking a records and leaving it locked.