Junior — Middle
Объектке багытталган программалоодо Декоратор үлгүсүнүн концепциясы жана колдонулушу жөнүндө түшүндүрө аласызбы?
sobes.tech AI
AIден жооп
Декоратор үлгүсү объекттерге динамикалык түрдө жаңы жоопкерчиликтерди кошууга мүмкүндүк берет, аларды башка декоратор объекттерине ороп, классдын булагы кодун өзгөртпөстөн. Бул өзгөчө мурас алуу менен функционалдуулукту кеңейтүү керек болгондо пайдалуу.
Мисал катары, негизги Ичимдик интерфейси жана баа() методу бар. Сиз Кофе классын түзүп, андан соң Сүт менен, Шекер менен декораторлорду кошуп, бааны жогорулатуу жана жүрүм-турумун өзгөртүүңүз мүмкүн.
interface Ичимдик {
double баа();
}
class Кофе implements Ичимдик {
public double баа() { return 5.0; }
}
class ДекораторСүт менен implements Ичимдик {
private Ичимдик ичимдик;
public ДекораторСүт менен(Ичимдик ичимдик) { this.ичимдик = ичимдик; }
public double баа() { return ичимдик.баа() + 1.0; }
}
// Колдонуу
Ичимдик кофе = new Кофе();
Ичимдик кофеСүт менен = new ДекораторСүт менен(кофе);
System.out.println(кофеСүт менен.баа()); // 6.0
Бул ыкма менен функционалдуулукту ийкемдүү аралаштырып, көптөгөн подкласстар түзбөстөн колдонсо болот.