Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

128
Visualizações
Patrón de diseño para la clase de adaptador cuyas funciones dependen de la disponibilidad del SDK externo

Tengo una clase de adaptador ( ChatSdkAdapter ) para Sdk de chat externo. Chat SDK no está disponible como un paquete de NPM y, por lo tanto, se carga mediante inyección en el documento a través de una etiqueta de secuencia de comandos. Una vez cargado e inicializado, se puede acceder desde el objeto de la ventana: window.ChatSdk.login()...

La clase ChatSdkAdapter contiene métodos como login, sendMessage..., que dependen de la disponibilidad de la API window.ChatSdk.

¿Qué método se prefiere para resolver el acoplamiento entre el adaptador y el SDK?

Método 1: exponga el método getInstance en el adaptador, que siempre devolvería la misma instancia del adaptador, pero antes de eso, verifique si window.ChatSdk está disponible (y si no, devolverá un error). Sin embargo, ¿qué sucede si se elimina (descarga) window.ChatSdk después de crear la instancia?

Método 2: agregue una verificación si ChatSdk está disponible en todos los métodos del adaptador (EnsureChatSdkAvailable()), como primera línea

¿Cuál de estos se prefiere, y hay un mejor enfoque?

Gracias de antemano.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Ambas cosas. Use el getInstance() seguro en sus métodos de clase para llamar a window.ChatSDK y recuperarlo. De esta manera, cada método que use el SDK de chat generará un error correcto si el SDK no está allí en cualquier momento.

 # pseudocode Class ChatAdapter { private chat: ChatSDK private function initChat(): void { # what ever you need to do to initialize your chat sdk # or error if you cant this.chat = window.ChatSDK } private function getChatInstance(): ChatSDK { if (this.chat ==== undefined) { this.initChat() } return this.chat } public function doSomething (): void { this.getChatInstance().doSomething() } }

Esencialmente, lo que está haciendo es el patrón singleton donde tiene una instancia única que se mantiene en la memoria para que todas las instancias de su adaptador llamen. Además, notará que puse una función de inicio porque creo que es preferible inicializar cuando primero "necesita" el sdk de chat, pero si por alguna razón no puede controlar el inicio, entonces puede fallar.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda