Quick actions

cmd+k|ctrl+k

Navigation

Languages

Object Composition

Snippet info

Language

JavaScript

Visibility

public

Author

ferdynand170

Created

2023-04-20T09:25:37.863862Z

Updated

2023-04-20T14:40:25.120171Z

class Developer {
    constructor(name) {
        this.name = name;
    }
    
    commitChange() {
        console.log(`${this.name} is committing changes`);
    }
}

function canBuildUI(developer) {
    return {
        buildUI: () => {
            console.log(`${developer.name} is building UI...`);
        }
    }
}

function canBuildAPI(developer) {
    return {
        buildAPI : () => {
            console.log(`${developer.name} is building API...`);
        }
    }
}

function canDeployApp(developer) {
    return {
        deployApp : () => {
            console.log(`${developer.name} is deploying app...`);
        }
    }
}

function createFrontEndDeveloper(name) {
    const developer = new Developer(name); //Membuat variabel developer mengembalikan nilai objek dengan argumen name yang nilainya diambil dari argumen createFrontEndDeveloper
    return Object.assign(developer, canBuildUI(developer)); //mengkomposisikan kemampuan" akan dikirim ke canBuildUI(developer)
}

function createBackEndDeveloper(name) {
    const developer = new Developer(name);
    return Object.assign(developer, canBuildAPI(developer));
}

function createDevOps(name) {
    const developer = new Developer(name);
    return Object.assign(developer, canDeployApp(developer));
}

function createFullStackDeveloper(name) {
    const developer = new Developer(name);
    return Object.assign(developer, canBuildUI(developer), canBuildAPI(developer), canDeployApp(developer));
}

//Untuk pemanggilan harus variabel.function yang akan dipanggil();

const frontEndDeveloper = createFrontEndDeveloper('Fulan');
frontEndDeveloper.commitChange();
frontEndDeveloper.buildUI();
console.log(`is ${frontEndDeveloper.name} developer ?`, frontEndDeveloper instanceof Developer);

const backEndDeveloper = createBackEndDeveloper('Fulana');
backEndDeveloper.commitChange();
backEndDeveloper.buildAPI();
console.log(`is ${backEndDeveloper.name} developer ?`, backEndDeveloper instanceof Developer);

const devOps = createDevOps('Fulani');
devOps.commitChange();
devOps.deployApp();
console.log(`is ${devOps.name} developer ?`, devOps instanceof Developer);

const fullStackDeveloper = createFullStackDeveloper('Fulanah');
fullStackDeveloper.commitChange();
fullStackDeveloper.buildUI();
fullStackDeveloper.buildAPI();
fullStackDeveloper.deployApp();
console.log(`is ${fullStackDeveloper.name} developer ?`, fullStackDeveloper instanceof Developer);
INFO