Design Patterns Java™ Workbook

(Michael S) #1
Appendix B. Solutions


  • The name of each of a class's methods should be a good commentary on what the
    method does.


SOLUTION 7.3.......................................................................................................................................

At least two earlier challenges have involved cases in which the effect of calling a method is
not completely predictable from the method name.



  • Challenge 2.1 on page 14 asks about methods that do not imply responsibility on the
    part of the implementing class to take action or to return a value. As the solution (page
    359) suggests, when a class registers for notification calls, such as
    mouseDragged(), the methods do not imply an obligation to the caller.

  • Chapter 6, Bridge, gives several examples showing that the effect of calling an
    abstraction's methods depends on which driver or implementation is in place.


The effects of calling a method are purposely unpredictable when the method is part of an
abstraction and when the method exists to receive notification. In other cases, a method with
unforeseeable results may simply be misnamed.


The Java class libraries contain other examples of when you might not predict a method's
behavior from knowing its name. In particular, >Chapter 18, Prototype, asks you to take a
hard look at the behavior of Object.clone() in Challenge 18.3 on page 186.


SOLUTION 7.4.......................................................................................................................................

To keep another developer from burrowing into your package with subclasses that manipulate
protected members of your classes, you might



  • Offer to add the function the developer needs

  • Modify your instance variables with private visibility and use get- methods
    within your own package

  • Declare classes like SolidRocket to be final, so that they cannot be subclassed

Free download pdf