클로즈업 명령 모드

1463 단어

대상 버전: 미리 삽입된 명령 수신자는 대상의 속성으로 저장됩니다

var Tv = {
    open: function() {
        console.log('open tv');
    },
    close: function() {
        console.log('close tv');
    }
};

var OpenTvCommand = function(receiver) {
    this.receiver = receiver;
}

OpenTvCommand.prototype.excute = function() {
    this.receiver.open();
}

OpenTvCommand.prototype.undo = function() {
    this.receiver.close();
}

var setCommand = function(command) {
    document.querySelector('#excute').onclick = function() {
        command.excute();
    };
    document.querySelector('#undo').onclick = function() {
        command.undo();
    };
};

setCommand(new OpenTvCommand(Tv));

클로즈업 버전: 명령 수신자가 클로즈업으로 이루어진 환경에 폐쇄됨

var Tv = {
    open: function() {
        console.log('open tv');
    },
    close: function() {
        console.log('close tv');
    }
};

var createCommand = function(receiver) {
    var excute = function() {
        receiver.open();
    };
    var undo = function() {
        receiver.close();
    };
    return {
        excute: excute,
        undo: undo,
    };
}

var setCommand = function(command) {
    document.querySelector('#excute').onclick = function() {
        command.excute();
    };
    document.querySelector('#undo').onclick = function() {
        command.undo();
    };
};

setCommand(createCommand(Tv));

좋은 웹페이지 즐겨찾기