Делегирование работы другому объекту в Java
Делегирование означает, что метод класса сам почти ничего не делает, а передает работу другому объекту. Сначала сделаем помощника, который форматирует заголовок:
class Formatter {
String title(String text) {
return "=== " + text + " ===";
}
}
Теперь сделаем класс Post. Он хранит заголовок
и объект форматирования:
class Post {
private String title;
private Formatter formatter;
Post(String title, Formatter formatter) {
this.title = title;
this.formatter = formatter;
}
}
Добавим метод, который делегирует работу форматтеру. Снаружи вызывают метод записи, а настоящую работу делает объект-помощник:
String showTitle() {
return formatter.title(title);
}
Проверим результат на объекте записи:
Formatter formatter = new Formatter();
Post post = new Post("News", formatter);
System.out.println(post.showTitle());
Такой прием удобен тем, что сложная работа остается в отдельном классе, а основной класс только связывает части программы между собой.
Сделайте класс Counter с полем value
и методом inc().
Сделайте класс Stats с полем Counter
и методом show(), который выводит текущее
значение счетчика.