@lybioit/component-interface-pattern
Version:
Padrão de Interface de Componente - Abstrações para desenvolvimento de componentes reutilizáveis. Projeto da disciplina BRADEPO do IFSP-BRA.
116 lines • 3.91 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ComponentInterface = void 0;
/**
* ComponentInterface (Interface de Componente)
*
* Implementação abstrata do elemento da estrutura que agrega os elementos
* do subsistema de interface de componente.
*
* Esta classe serve como ponto central para gerenciar múltiplos portos
* de interface, permitindo que um componente se comunique com diversos
* outros componentes através de diferentes portos.
*
* @abstract Esta classe deve ser estendida para implementar comportamentos específicos
*/
class ComponentInterface {
/**
* Construtor da interface de componente.
*
* Inicializa a lista de portos vazia.
*/
constructor() {
/** Identificador único do componente */
this.id = '';
/** Lista de portos de interface associados ao componente */
this.ports = [];
this.ports = [];
}
/**
* Retorna o identificador único do componente.
*
* @returns O ID do componente
*/
getId() {
return this.id;
}
/**
* Recupera um porto específico pelo seu identificador.
*
* Busca na lista de portos um porto que corresponda ao ID fornecido.
*
* @param id - O identificador do porto a ser recuperado
* @returns O porto encontrado ou undefined se não existir
*/
getPort(id) {
return this.ports.find(port => port.getId() === id);
}
/**
* Conecta um porto externo a um porto específico do componente.
*
* Estabelece uma conexão entre um porto externo e um porto interno
* identificado pelo portId.
*
* @param externalPort - O porto externo ao qual se conectar
* @param portId - O identificador do porto interno
*/
connectToPort(externalPort, portId) {
const selectedPort = this.getPort(portId);
if (selectedPort) {
selectedPort.connect(externalPort);
}
}
/**
* Conecta um porto externo ao componente.
*
* Método geral para estabelecer conexões com portos externos.
*
* @param externalPort - O porto externo ao qual se conectar
*/
connect(externalPort) {
// Método geral de conexão
}
/**
* Conecta uma referência não-componente a um porto específico.
*
* Permite conexões com objetos que não são portos de interface,
* como funções, objetos ou outras referências externas.
*
* @param externalReference - A referência externa não-componente
* @param portId - O identificador do porto interno
* @throws Error quando o método não está implementado
*/
connectNonComponent(externalReference, portId) {
// TODO Método auto-gerado
throw new Error("Método 'connectNonComponent' não implementado");
}
/**
* Desconecta um porto externo de um porto específico do componente.
*
* Remove a conexão entre um porto externo e um porto interno
* identificado pelo portId.
*
* @param externalPort - O porto externo do qual se desconectar
* @param portId - O identificador do porto interno
* @throws Error quando o método não está implementado
*/
disconnectFromPort(externalPort, portId) {
// TODO Método auto-gerado
throw new Error("Método 'disconnect' não implementado");
}
/**
* Desconecta um porto específico do componente.
*
* Remove todas as conexões de um porto interno identificado pelo portId.
*
* @param portId - O identificador do porto interno a ser desconectado
*/
disconnectPort(portId) {
const selectedPort = this.getPort(portId);
if (selectedPort) {
selectedPort.disconnect();
}
}
}
exports.ComponentInterface = ComponentInterface;
//# sourceMappingURL=ComponentInterface.js.map