|
|
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |
Suppose you want to add some functionality toAlarmClockfor its 2.0 release. For example,GUIClockneeds to update its display every second so that it makes continual requests to be woken up. Really,GUIClockjust wantsAlarmClockto beep at it every second. It would be preferable to register a single request withAlarmClock, for two reasons:
- It's more efficient because it involves fewer method calls.
GUIClockwouldn't have to maintain its ownAlarmClockbecause it wouldn't risk losing its bed.AlarmClockneeds to differentiate such "beeps" from an actual wake up call. So now theSleeperinterface must include abeepmethod:However, if you make this change topublic interface Sleeper { public void wakeUp(); public void beep(); public long ONE_SECOND = 1000; }Sleeper, all classes that implement the oldSleeperwill break because they don't implement the interface anymore! Programmers relying on this interface will protest loudly.Try to anticipate all uses for your interface up front and specify it completely from the beginning. Given that this is often impossible, you may need either to create more interfaces later or to break your customer's code.
|
|
Start of Tutorial > Start of Trail > Start of Lesson |
Search
Feedback Form |