Расширение класса может привести к непреднамеренным побочным эффектам.
Если у Foo уже есть конструктор (или несколько), вы должны также реализовать его и вызвать суперкласс.
Кроме того, если у Foo есть закрытое состояние или побочные эффекты в конструкторе, теперь они выполняются дважды . Один раз для Foo, переданного в конструкторе, и один раз для LoggedFoo, который также является Foo.
Это может стать грязным и привести к ошибкам и увеличению потребления ресурсов, но это полностью зависит от класса. Если класс ведет себя как интерфейс (конструктор по умолчанию, без побочных эффектов, без состояния), это не может быть проблемой напрямую. Но на этом этапе это будет просто подкласс, который обращается к другому экземпляру, который может быть удобной конструкцией, но я бы не назвал его, используя шаблон декоратора.