Sobes.tech
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())

Така, клас-обвивка помага за разширяване на функционалността без наследяване и без промяна на оригиналния клас.