ortense
2/2/2016 - 2:24 PM

Playing with factory and compositin in javascript

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! // *-*