Cadeia de responsabilidade em Python …
Nesse padrão de design, existem alguns tipos de executores de um comando amarrado em uma cadeia – em diferentes níveis. Dependendo da complexidade da tarefa, o comando é tratado em diferentes níveis. Cada receptor está bem ciente de que ele pode lidar com o comando. Se ele não pode, ele simplesmente passa o dinheiro para a próxima pessoa na cadeia. Uma vez que o comando atinge o nível mais alto da cadeia, ele deve ser tratado lá, pois não há mais sucessor após a maior autoridade. A idéia é que o comando seja sempre entregue no nível mais baixo da cadeia e, em seguida, ela avança – uma etapa de cada vez até que seja tratada em um desses níveis. Aqui está o diagrama de classes da cadeia do padrão de design de responsabilidade. Aqui vai o código -fonte da cadeia de responsabilidade implementada em Python … do ABC importar ABC, AbstractMethod Class ICommand (ABC): def __init __ (self, nível): self.level = nível de classe commandreceiver (abc): def __init __ (sucessor): e self.succesSor = sucessor @absl @ABStr. handleCommand(self, command): retType = self.handleCommandImpl(command) if self.successor != None and retType == False: self.successor.handleCommand(command) else: return class ReceiverLevel1(CommandReceiver): def __init__(self, successor): self.successor = successor def handleCommandImpl(self, comando): se comando.level == 1: print (“O comando é tratado no nível 1”) retorna true else: print (“encaminhando o comando do nível 1 para o nível 2”) retorna false classe RECIVERLEVEL2 (commandReceiver): def __init __ (self, sucessor): self.succeSor = sucessor def HandlecMandimPl ( 2 “) retornar TRUE ELSE: Print (” Encaminhando o comando do nível 2 para o nível 3 “) Retorne false classe ReceiverLvel3 (CommandReceiver): def __init __ (self, sucessor): self.successor = sucessor de def, o comando de lenCommandImpl (comando): se comando. Aqui … “) Retorne False # Pressione o botão verde na sarjeta para executar o script. se __name__ == ‘__Main__’: commandLevel1 = icommand (1) commandLevel2 = icommand (2) commandLevel3 = icommand (3) receiverLvel3 = receiverLvel3 (não) REPIVERLEVELVEL2 = REPIVERLEVAL2 (RECENVERLEVEL3) RECENVERLEVEL1 = RENGIVERLEVEL1 (RENGLEAVELO2 = REPIVERLEVEL2 (REPINGLEVEL1) Modo de tela cheia Sair do modo de tela cheia
Fonte