14.5. Generality

 <  Day Day Up  >  

Sam's system was created specifically for CDDiscs. You can use the underlying design for any system that needs to keep track of rentals of identifiable items. CDDisc can be generalized to RentableItem , which represents any rentable item that has a unique identity. CDRelease can be changed to CatalogItem , which represents a type of item identified by a UPC code. RentableItem s are physical copies of CatalogItem s. The RentalOperation s interface, with RentableItem s substituted for CDDisc s, provides the necessary operations. The specific methods in the CatalogOperation s, just as searching by the recording artist, are not applicable to RentableItem s. However, the separation of RentalOperation s from CatalogOperation s is generally applicable.

If we had tried in the beginning to make Sam's system general, we could have been bogged down in endless details. For example, the pricing mechanism for Sam's system was simple: three prices for three different categories of CDRelease s and fixed rental periods. For a general system, the pricing would probably vary based on the rental period.

With Sam's system, we gained an understanding of the issues involved in rentals. Armed with the experience gained in developing that system, we could now tackle a more general problem such as a universal rental system or another industry-specific rental system.

 <  Day Day Up  >  


Prefactoring
Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability
ISBN: 0596008740
EAN: 2147483647
Year: 2005
Pages: 175
Authors: Ken Pugh

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net