მრავალწლიანი გამოცდილების შემდეგ გამოჩნდა, რომ პრობლემების უმრავლესობა ერთმანეთს ჰგავს და შესაძლებელია ერთი კონკრეტული გადაწყვეტის სხვადასხვა ამოცანაზე ან მოდულზე მორგება, სწორედ ამას ეწოდება "დიზაინის ნიმუში" ( 😁 ) ანუ Design Pattern. არსებობს უამრავი დიზაინის ნიმუში, მაგრამ ყველაზე პოპულარულია GoF დიზაინის ნიმუშები, სადაც გაერთიანებულია 23 ნიმუში. ეს ნიმუშები კლასიფიცირდება 3 ტიპის მიხედვით: Creational[შემოქმედებითი], Structural[სტრუქტურული] და Behavioral[ქცევითი] ნიმუშები. ამ კონკრეტულ პოსტში მინდა აღვწერო Mediator ნიმუში, რომელიც ქცევითი ტიპის პატერნებს განეკუთვნება.
როდესაც OOP (Object-Oriented Programming) ის პრინციპებით ვადეველოპერებთ სისტემას, გვიჩნება სხვადასხვა საჭირო კლასები და მისი ობიექტები. მათი ერთმანეთში ქცევითი ურთიერთქმედება ქმნის სისტემის ფუნქციონალს. ამოცანის სირთულესთან და სიდიდესთან ერთად განისაზღვრება სწორედ კლასებისა და მისი ობიექტების რაოდენობაც, რაც უფრო დიდია Software Requirement-ები და სისტემის მაშტაბურობა, მით უფრო მეტ ერთმანეთზე ფუნქციურად დამოკიდებულ ობიექტებს ვიღებთ, რამაც შეიძლება კოდში საკმაოდ ბევრი ერთმანეთზე დამოკიდებული მოდულები გააჩინოს. ერთი კლასის ლოგიკის ცვლილებამ შეიძლება გამოიწვიოს მასზე დამოკიდებული სხვა კლასების ცვლილება. მედიატორი სწორედ ამ პრობლემის მოგვარების გზაა. მისი იმპლემენტაციით, შეგვიძლია შევზღუდოთ კლასის ობიექტებს შორის პირდაპირი კომუნიკაცია და ვაიძულოთ ისინი მედიატორის დახმარებით ითანამშრომლონ ერთმანეთთან.
მოდი განვიხილოთ კონკრეტული მაგალითი და C#-ის დახმარებით დავიმპლიმენტიროთ მედიატორი:
გვაქვს Footballer კლასი რომელიც იმპლემენტირებას უკეთებს IFootballer ინტერფეისს. მათში მოქცეულია 2 მეთოდი, KickTheBall და Move, რომლებიც ვირტუალურად ასახავენ მოედანზე ფეხბურთელის საქმიანობას 😁.
Mediator კლასი რომელიც იმპლემენტირებას უკეთებს IMediator ინტერფეისს. როგორც ხედავთ, Mediator კლასი თავისი მეთოდებით ცდილობს Footballer-კლასს შუამავლობა გაუწიოს. მისი დახმარებით ნებისმიერი სხვა კლასი ურთიერთქმედებას შეძლებს Footballer კლასთან.
No comments:
Post a Comment