Playing with factory and compositin in javascript
'use strict';
const PeopleFactory = props => {
const getFullName = () => `${props.firstName} ${props.lastName}`;
return {
firstName: props.firstName,
lastName: props.lastName,
get fullName () {
return getFullName();
},
say () {
return `I'm ${getFullName()}!`
}
};
};
const GamerFactory = props => {
return {
game: props.game,
play () {
return `Playing ${props.game}!`;
}
};
};
const DeveloperFactory = props => {
return {
language: props.language,
code () {
return `Coding in ${props.language}`
}
};
};
const DeveloperGamerPeopleFactory = props => {
return Object.assign({},
DeveloperFactory(props),
GamerFactory(props),
PeopleFactory(props)
);
};
let me = DeveloperGamerPeopleFactory({
firstName: 'Marcus',
lastName: 'Ortense',
game: 'WoW',
language: 'JavaScript'
});
me.say(); // I'm Marcus Ortense!
me.play(); // Playing WoW!
me.code(); // Coding in JavaScript!
me.language = 'Java'; // :'(
me.code(); // Coding in JavaScript! // *-*