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 +=...