Junior — Middle
Допустимо ли да създавате клас носител на друг клас в обектно-ориентираното програмиране?
sobes.tech AI
Отговор от AI
Създаването на клас-обвивка (wrapper) за друг клас в обектно-ориентираното програмиране е допустимо и често се използва. Този клас служи за инкапсулация, разширяване или промяна на поведението на оригиналния клас без да се променя неговият код.
Например, клас-обвивка може да добавя логване, кеширане или контрол на достъпа до методите на вътрешния клас. Това съответства на принципа на композиция и шаблона "Декоратор".
Пример на Swift (iOS):
class Service {
func fetchData() -> String {
return "Данни"
}
}
class ServiceWrapper {
private let service: Service
init(service: Service) {
self.service = service
}
func fetchData() -> String {
print("Логване на извикването fetchData")
return service.fetchData()
}
}
let service = Service()
let wrappedService = ServiceWrapper(service: service)
print(wrappedService.fetchData())
Така, клас-обвивка помага за разширяване на функционалността без наследяване и без промяна на оригиналния клас.