Page 114 - 4836
P. 114
Нехай вже є допоміжний метод getNextUser(), який
повертає черговий рядок цієї таблиці, а якщо рядків більше
немає, повертає нуль. Заголовок цього методу може виглядати
таким чином:
Map getNextUser();
Зауважте, повертаємий результат має інтерфейсний тип
Map, а не якогось конкретного класу (наприклад, Hashtable).
Це професійний підхід до розробки методу. Звичайно,
всередині методу відбувається робота з об'єктом конкретного
класу (можливо, з тим ж самим Hashtable - адже метод
повинен створити об'єкт, який повертається, а створити об'єкт
абстрактного класу чи інтерфейсу не можна). Але,
приховуючи деталі своєї реалізації і повідомляючи програмі
лише мінімально необхідну інформацію (що результат, який
повертається підтримує інтерфейс Map), метод домагається
більшої гнучкості. Згодом може бути прийнято рішення
замінити Hashtable на HashMap і при цьому всі зміни потрібно
буде провести тільки в тілі методу getNextUser(), а не у всіх
місцях програми, де він викликався.
Ключами елементів асоціативного масиву, що
повертається методом getNextUser() є рядки, що збігаються з
назвами стовпців таблиці, а значеннями - рядки, що містять
значення з відповідної комірки таблиці. Припустимо, що цей
метод до того ж полегшує нам роботу: заміняє значення 0
112