Junior — Middle
94
Java-да бар болған класстарға кеңейтілген функционалдылықты олардың бастапқы кодын өзгеріссіз қалай қосуға болады?
AI-дан жауап
sobes.tech AI
Java-да кеңейтілген функционалдылықты бар классқа өзгеріссіз қосу үшін жиі "Декоратор" паттерні немесе композиция пайдаланылады.
Сонымен қатар, Java 8-ден бастап, интерфейстерде әдепкі әдістерді қолдануға болады, олар жүзеге асырумен әдістер қосуға мүмкіндік береді, бұл интерфейсті жүзеге асыратын кластарды өзгерту қажет емес.
Android және Kotlin-да кеңейтулер (extension functions) қолдануға болады, бірақ таза Java-да мұндай механизм жоқ.
Декораторды қолданудың мысалы:
interface Printer {
void print(String message);
}
class SimplePrinter implements Printer {
public void print(String message) {
System.out.println(message);
}
}
class DecoratorPrinter implements Printer {
private Printer wrapped;
public DecoratorPrinter(Printer wrapped) {
this.wrapped = wrapped;
}
public void print(String message) {
// Функционалдылықты қосу
System.out.print("[Decorated] ");
wrapped.print(message);
}
}
// Қолдану
Printer printer = new DecoratorPrinter(new SimplePrinter());
printer.print("Hello");
Осылайша, функционалдылықты кеңейту объектіні орау арқылы жүзеге асады, ал бастапқы класс өзгермейді.