rvller
@rvller

Делегирование в интерфейсе(Java)?

В университете одно из заданий в лабе:


«Интерфейс IPrinterDelegate наследуйте от интерфейса IPrinter. Дополните интерфейс IPrinterDelegate методом, который позволит классифицировать отношения между объектами IPrinterDelegate и объектами IPrintable как отношение делегирования (Объекты IPrinterDelegate — делегаты, объекты IPrintable — уполномоченные). Создайте пример конкретного класса семейства IPrinterDelegate и приведите пример клиентского кода.»


Реализация IPrinter:
public interface IPrinter {
	abstract void PrintString(String string);
	abstract void PrintChar(char character); 
}



Реализация IPrintable:
public interface IPrintable {
	abstract void Print(IPrinter printer);
}



Как я понял, нужно сделать так, чтобы в интерфейсе IPrinterDelegate был новый метод, который использует методы IPrinter? Как вообще что-то такое можно реализовать?


Пишу на Java.
  • Вопрос задан
  • 5106 просмотров
Решения вопроса 1
taliban
@taliban
php программист
Реализация IPrintable:
public interface IPrintable {
	abstract void Print(IPrinter printer);
}


Не подсказка разве? Естественно если в интерфейсах нельзя писать код, значит нужно указать неявную связь. Я по крайней мере так понял задание.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
javenue
@javenue
1. Лучше назвать print, а не printAll. Метод printAll подразумевает коллекцию IPrintable.
2. Названия методов по code convention пишутся с маленькой буквы.

Для полноты картины лучше добавить еще реализацию IPrintable, например:
public class SingleRowDocument implements IPrintable {
private String row;

public SingleRowDocument(String row) { this.row = row; }
public String getRow() { return row; }

public void print(IPrinter printer) {
printer.printString(row);
}
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы