DEV Community

Helder Burato Berto
Helder Burato Berto

Posted on

🔥 Quick Tip: How to use the Composite design pattern

On this simple trick, I'll show you how to use the Composite design pattern.

const canLowerCase = state => ({ lower: () => state.text.toLowerCase() }); const canUpperCase = state => ({ upper: () => state.text.toUpperCase() }); const mergeBehaviors = (state, ...behaviors) => Object.assign({}, canLowerCase(state), canUpperCase(state), ...behaviors); const makeText = text => { const state = { text, }; const canPrintText = (state) => ({ print: () => `CURRENT TEXT: "${state.text}"` }); return mergeBehaviors(state, canPrintText(state)); } const newText = makeText('Lorem Ipsum'); console.log(newText.lower()); // => 'lorem ipsum' console.log(newText.upper()); // => 'LOREM IPSUM' console.log(newText.print()); // => 'CURRENT TEXT: "Lorem Ipsum"' 
Enter fullscreen mode Exit fullscreen mode

Did you like it? Comment, share! ✨

Top comments (0)