Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

147
Vistas
JS Design Patterns - ¿Fábrica de métodos?

tengo un componente

 export default function PressableText({ children = "", detectionOptions = Object.keys(PATTERNS).map((type) => ({ type })), style = commonStyles.text }) { ... } PressableText.propTypes = { children: PropTypes.string, detectionOptions: PropTypes.arrayOf( PropTypes.shape({ type: PropTypes.oneOf(Object.keys(PATTERNS)).isRequired, onPress: PropTypes.func, }) ), ... };

Como puede ver, 'detectionOptions' recibe una matriz de (type, onPress) y el método onPress es opcional.

Mi objeto PATRONES actual se ve así:

 export const PATTERNS = { username: /@[a-zA-Z0-9_.-]{3,30}/, uri: regexForUri, phone: regexForPhone, };

Entonces... básicamente, lo que quiero hacer es proporcionar una acción onPress predeterminada para cada tecla.

He pensado en implementar una fábrica, pero no soy muy bueno en Design Patterns. ¿Esto se considera una fábrica?

 // // CODE INSIDE MY COMPONENT, AS IT ACCESS COMPONENT RELATED STUFF // const handleOnPressUri = () => { ... }; const handleOnPressPhone = () => { ... }; const handleOnPressUsername = () => { ... }; const defaultPressableActions = useMemo( // IS THIS A FACTORY? () => ({ uri: handleOnPressUri, phone: handleOnPressPhone, username: handleOnPressUsername, }), [] ); const getPatterns = () => detectionOptions.map(({ type, onPress }) => { const pattern = PATTERNS[type]; if (pattern) { return { pattern, onPress: onPress ?? defaultPressableActions[type], }; } throw new Error(`Invalid pattern type.`); } );

Pregunto esto, porque hasta donde yo sé, una fábrica es un generalizado que devuelve cosas personalizadas, de forma centralizada. Pero… ¿qué tal un mapa que, por cada tecla, devuelva una acción?

¿Se le ocurre alguna otra solución mejor para refactorizar este código?

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda