Facade Pattern (CPU example)

by Ivan Gerasimenko

HTML

<h4>Facade pattern</h4>
<div id="logger"></div>

JavaScript

/* FACADE */

var module = (function() {
  var _private = {
    i: 5,
    get: function() {
      return ('Текущее значение:' + this.i);
    },
    set: function(val) {
      this.i = val;
    },
    run: function() {
      return ('процесс запущен');
    },
    jump: function() {
      return ('резкое изменение');
    }
  };
  return {
    facade: function(args) {
        var returnString = "";
        _private.set(args.val);
        returnString += _private.get();
        if (args.run) {
            returnString += "<br />" + _private.run();
        }
        
        return returnString;
    }
  }
}());

/* Facade */
function Computer() {
    var _private = {
        BOOT_SECTOR: "BOOT_SECTOR",
        BOOT_ADDRESS: "BOOT_ADDRESS",
        SECTOR_SIZE: 512,
        CPU: {
            address: "",
            freeze: function () {
                return "freezing...";
            },
            jump: function (address) {
                this.address = address;
                return "jump to address: 0x" + address;
            },
            execute: function () {
                return "executing starting from: 0x" + this.address;
            }
        },
        Memory: {
            load: function (params) {                
                return "Write to RAM: " + params.bootData + ". TO: " + params.bootAddress;
            }
        },
        HardDrive: {
            read: function (params) {
                return "HDD_data_XXXX_Taken_From: " + _private.SECTOR_SIZE +
                    "Byte " + params.BOOT_SECTOR;
            }
        }

    };
    return {
        facade: function (args) {
            var returnString = "";
            _private.set(args.val);
            returnString += _private.get();
            if (args.run) {
                returnString += "<br />" + _private.run();
            }

            return returnString;
        },
        start: function () {
            var returnStr = "";
            returnStr +=...