Middle
'Команда' (Command) үлгіс деген эмне?
sobes.tech AI
AIден жооп
Пайдалануу үлгүсү, ал суроо-талапты өзүнчө объектке айлантат, ал суроо-талап тууралуу бардык маалыматтарды камтыйт. Бул объекттердин методдорун ар кандай суроо-талаптар менен параметрлөөгө, суроо-талаптарды кезекке коюуга же журналда сактоого, ошондой эле операцияларды жокко чыгарууга мүмкүндүк берет.
Негизги элементтери:
- Команда (Command): Абаастраак класс же интерфейс, ал суроо-талапты аткаруу үчүн методду жарыялайт.
// Команда интерфейси class Command: def execute(self): pass - Конкреттүү команда (Concrete Command):
Commandинтерфейсин ишке ашырып, кабыл алуучуну аракет менен байланыштырат. Ал кабыл алуучуда аткарылуучу аракеттердин топтомун аныктайт.// Жарык өчүрүү үчүн конкреттүү команда class LightOnCommand(Command): def __init__(self, light): self._light = light # кабыл алуучу def execute(self): self._light.on() - Кабыл алуучу (Receiver): Чынжыр, ал чындыкта ишти кантип аткаруу керектигин билет. Биздин мисалда бул
Light.// Кабыл алуучу - иш-аракеттер аткарылуучу объект class Light: def on(self): print("Жарык күйгүзүлдү") def off(self): print("Жарык өчүрүлдү") - Инициатор (Invoker): Объект, ал командадан ишти аткарууну сурайт. Ал конкреттүү команда же кабыл алуучуну билбейт.
// Инициатор - командага чакыруу жасайт class RemoteControl: def set_command(self, command): self._command = command def press_button(self): self._command.execute() - Клиент (Client):
Concrete Commandобъекттерин түзөт жана алардыReceiverменен байланыштырат. Андан соң командасынInvokerга берет.// Клиент коду if __name__ == "__main__": light = Light() # кабыл алуучу light_on_command = LightOnCommand(light) # конкреттүү команда remote = RemoteControl() # Инициатор remote.set_command(light_on_command) # Команданы инициаторго берүү remote.press_button() # Инициатор командасын чакырат
Артыкчылыктары:
- Инициатор менен кабыл алуучуну бөлүп турат.
- Инициаторду ар кандай командалар менен параметрлөөгө мүмкүндүк берет.
- Операцияларды жокко чыгаруу/кайра ишке ашыруу оңой болот (тарыхты сактоо аркылуу).
- Командалардын кезектерин түзүүгө жана алардын аткарылышын журналда каттоого мүмкүндүк берет.
Кемчиликтери:
- Класстардын саны көп болушу мүмкүн, эгер көп команда болсо.