Skip to Main Content
Prefactoring
book

Prefactoring

by Ken Pugh
September 2005
Intermediate to advanced content levelIntermediate to advanced
240 pages
6h 28m
English
O'Reilly Media, Inc.
Content preview from Prefactoring

14.5. Generality

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. RentableItems are physical copies of CatalogItems. The RentalOperations interface, with RentableItems substituted for CDDiscs, provides the necessary operations. The specific methods in the CatalogOperations, just as searching by the recording artist, are not applicable to RentableItems. However, the separation of RentalOperations from CatalogOperations 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 CDReleases 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.

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Understanding Unittest.Mock

Understanding Unittest.Mock

Mario Corchero
Java™ Performance

Java™ Performance

Charlie Hunt, Binu John

Publisher Resources

ISBN: 0596008740Supplemental ContentCatalog PageErrata