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
ასე, შეგიძლიათ მოქნილი კომბინირება ფუნქციონალობის, ბევრი სუბკლასის შექმნის გარეშე.