Protocolos em Swift: Quando e como utilizar
Nossa didática
Ao invés de usar exemplos comuns de codigo com estruturas chamadas
Pessoa
ou Animal
, chamaremos nossas estruturas de Foguete
! Vamos para o codigo.프로토콜
Os protocolos são formatos de dados que você pode construir para ter uma estrutura Personalizada que armazena e padroniza objetos. Eles apenas ditam quais propriedades, metodos ou construtores uma Classe ou Struct deve ter, mas semimplementa-los! Vamos Ver um 예시:
INPE(Instituto Nacional de Pesquisas Espaciais) precisa salvar todos os projetos de seus foguetes를 상상해 보십시오. Cada um deles segue um protocolo de segurança, deve ser transportado e possui um jeito específico de ser lançado, além de ter seus devidos tripulantes, isto é, todos possuem esses métodos e propriedades, deve ser transportado e possui um jeito específico de ser lançado Você poderia pensar "Ora, vamos criar uma classe para cada um", mas sair declarando um monte de classes deliberadamente talvez não seja a melhor solução.
Vamos criar um protocolo chamado
Foguete
e definir nele as características das nossas nave espaciais:protocol Foguete {
static var tripulantes: List<String>
init(tripulantes: List<String>)
static func verificarSeguranca()
static func transportar()
static func decolar()
}
Muito bem, agora nos temos um padrão de construção de objetos
Foguete
que pode ser usado para a criação de classes, basta conformar com ele:class FogueteAurora: Foguete {
var tripulantes: List<String>
//init do FogueteAurora
init(tripulantes: List<String>) {
self.tripulantes = tripulantes
}
// verificarSeguranca do FogueteAurora
func verificarSeguranca() {
verificarMotores()
}
// transportar do FogueteAurora
func transportar() {
transportarNoCaminhao()
}
// decolar do FogueteAurora
static func decolar() {
ligarMotores()
soltarDaPlataforma()
}
}
코드 작성에 대한 주석을 참고하십시오. Eles se reference àsimplementações desse foguete em especifico, se alguma outtra classe conformar com o nosso protocolo ela poderá implementationar os mesmos metodos, mas do jeito que necessita, sem interferir ou ao menos 57 sobre do !
Agora você deve estar perguntando "Mas você não disse que criar classes não era uma boa abordagem?". A questão não é criar muitas ou poucas classes, e sim criar classes padronizadas! Com a existência do protocol to dos os foguetes tem implementationações dos mesmos metodos e propriedades, mas elas não são necessariamente iguais! E se algum objeto não seguir essa esttrutura, não pode ser thinkado um objeto do tipo
FogueteAurora
.Tendo um protocolo para a criação de objetos eu posso ter certeza de que se receber um objeto que conforma com o protocolo X esse item vai ter as características de X! Além disso, fica bem mais fácil criar funções que manipulem objetos com essa estrutura, já que agora você tem uma estrutura de dados para usar como tipo.
Vamos ver isso na prática: anagora Imagine que o INPE queira simular a execução das funções do foguetes com uma outra função. Como faríamos isso se apenas tivéssemos um monte classes? Teríamos que pegar uma por uma, verificar se existem todos os metodos necessários e então executa-los. Isso parece trabalhoso, não? Vamos usar o nosso protocolo e criar uma função assim:
func executarFuncoesDoFoguete(foguete: Foguete) {
foguete.varificarSeguranca()
foguete.transportar()
foguete.decolar()
}
Recebemos por parâmetro uma variável do tipo
Foguete
, que é o nosso protocolo, assim nos semper temos certeza de que os metodos que estamos chamando dentro da nossa funçãoque aziosem, me! No caso de estarem vazios nada acontece, mas se não existissem e tentássemos executa-los teríamos um erro… .Pronto, agora basta chamar a função passando para ela um objeto que conforme com Foguete, como o
Foguete
!콴도 우사르 프로토콜스?
Quando você tem uma esttrutura de dados que precisa ser declarada, mas suaimplementationação nem semper será igual.
Espero ter ajudado a Organizar suas ideias, nos vemos na próxima! 😄
참조
프로토콜 - Swift 프로그래밍 언어(Swift 5.4): https://docs.swift.org/swift-book/LanguageGuide/Protocols.html
Reference
이 문제에 관하여(Protocolos em Swift: Quando e como utilizar), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/guilhermetrevisan/protocolos-em-swift-quando-e-como-utilizar-549텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)