Практика композиции объектов в Java
Сделайте класс Department с названием и класс
Employee с именем и полем Department.
Метод team() у сотрудника должен возвращать
название отдела через вложенный объект.
Создайте сотрудника в отделе "Sales" и выведите
результат team().
Объявите интерфейс HasSize с методом
size(). Реализуйте его в NameListSize,
который хранит List<String> и возвращает
длину списка.
Объявите SizeView, реализующий HasSize
и делегирующий size() переданному объекту.
Для списка "a" и "b" выведите размер
через SizeView. Ожидается 2.
Объявите интерфейс Writer с методом
write(String text). Сделайте BufferWriter,
накопитель строк в списке.
Сделайте PrefixWriter, реализующий Writer
и хранящий другой Writer. В write
добавляйте префикс "> " и передавайте строку
вложенному writer. Запишите "one" через
PrefixWriter с BufferWriter внутри
и выведите единственный элемент буфера.
Объявите интерфейс Validator с методом
isValid(String text). Реализуйте
NonEmptyValidator и AlwaysValidValidator.
Сделайте EmployeePublisher с конструктором
EmployeePublisher(Validator validator) и методом
publish(String text): при успешной проверке
выводить "published", иначе "rejected".
Проверьте пустую строку с NonEmptyValidator
и непустую с AlwaysValidValidator.
Объявите интерфейс Calc с методами add
и mul. Реализуйте BasicCalc.
Сделайте AuditCalc, реализующий Calc
через поле Calc. Переопределите только add:
перед сложением выводите "add", затем вызывайте
вложенный калькулятор. Убедитесь, что mul(2, 3)
возвращает 6 без лишнего вывода.