Професионална програма
Loading...
vaskoleon avatar vaskoleon 23 Точки

Въпрос относно Command Pattern

Здравейте. Може ли да ми поясните какво точно представлява "Command Pattern"-a, и какви са начините да бъде имплементиран чрез C#? Питам, защото разгледах Wikipedia страницата за Command Pattern#C#, но имплементацията там ми се стори твърде абстрактна - нямаше почти нищо общо с това, за което се говори в лекциите и подготовките за изпита. Ако някой може да ми даде подробно обяснение за това как да използваме "Command Pattern" в писането на проекти, ще му бъда много благодарен.

0
C# OOP Advanced
TeodorStefanovPld avatar TeodorStefanovPld 1275 Точки

ресурси в нета има много аз си намерих и апликация за телефона въобще стига да искаш инфо много. Иначе тъй като решаваш Minedraft ще ти дам примера с него : имаш harvestercontroler  provider controler и 2та контролера правят определени неща като не е нужно да знаят какво прави другия или как го прави. Затова имплиментираме Command interpreter като неговата задача е да разчете каква е командата и след това да повика необходимото действие което да я изпълни.

Защо се прави заради extensability и solid principles общо взето заради strong cohesion loose coupling. А как се прави. Значи подаваме на Comand interpreter-a  2та контрола тои вече има достъп до тях. И създаваме командите като класове Общо взето метода които ще бъде изпълняван се подава като клас и това ни позволява примерно като изпълняваме Моdechange командата да извикаме само harvester.changemode или ако поправяме  Providers да извикаме само providerscontroler.repair.  A  и в бъдещ момент ни позволява да добавим  n-брои нови функционалности като ще е нужно да ги добавим само в  съотвения контролер като тип команда,interper-a ще разчете и изпълни командата без да има нужда да знае тя какво прави. 

И логическата връзка както си я видял и по графиките е :2та контролера са видими за  Commandinterprera,тои получава типа команда,извиква я създавайки нейн обект и я изпълнява. И всичко това става с reflection. И реално 2та контролера незнаят каква е командата и не ги интересува interprerter-a я обработва и изпълнява а самата команда държи в себе си само това което и трябва.

Дори предпоследния тест на Minedraft тества колко неща приема конструктора на командите,има го накрая на видето от подготовката.

2