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
Այսպիսով, դուք կարող եք ճկունորեն համակցել գործառույթը՝ առանց շատ ենթակլասներ ստեղծելու։