Fungsi dari pola mediator adalah untuk memutuskan hubungan kopling yang ketat antara objek, yang juga disebut 'mediator'. Semua objek berkomunikasi melalui objek perantara, daripada merujuk satu sama lain, jadi ketika suatu objek berubah, Anda hanya perlu memberi tahu perantara.
Misalnya: Menara perintah bandara, setiap pesawat hanya perlu berkomunikasi dengan menara komando. Menara perintah mengetahui status penerbangan dari setiap pesawat, dapat mengatur semua waktu lepas landas dan pendaratan, menyesuaikan rute, dll.
Model perantara sesuai dengan hukum Dimitian, yaitu prinsip pengetahuan terkecil, yang berarti bahwa suatu objek harus tahu sesedikit mungkin tentang objek lain. Jika kopling antar objek terlalu tinggi, mengubah objek akan memengaruhi banyak objek dan sulit dipertahankan. Ketika kopling objek ketat, sulit untuk memodifikasi satu objek tanpa mempengaruhi objek lainnya.
Jika kopling kompleks antara objek memang menyebabkan kesulitan dalam menelepon dan memelihara, dan derajat kopling ini tumbuh secara eksponensial dengan perubahan dalam proyek, maka kita dapat mempertimbangkan refactoring kode dengan pola perantara! Mediator meningkatkan pemeliharaan kode melalui decoupling.
Contoh 1: Game
Objek pemain dibuat melalui konstruktor pemain () dan memiliki poin dan atribut namanya sendiri. Metode play () pada prototipe bertanggung jawab untuk menambahkan titik pada dirinya sendiri dan memberi tahu perantara:
function player (name) {this.points = 0; this.name = name;} player.prototype.play = function () {this.points += 1; mediator.played ();};Objek papan skor (papan skor) memiliki metode pembaruan (), yang dipanggil oleh perantara setelah setiap pemain selesai bermain. Analisis tidak tahu informasi tentang pemain sama sekali, juga tidak menyimpan skor. Ini hanya bertanggung jawab untuk menampilkan skor yang diberikan oleh perantara:
var scoreboard = {element: document.geteLementById ('hasil'), update: function (skor) {var i, msg = ''; untuk (i dalam skor) {if (score.hasownproperty (i)) {msg + = '<p> <strong>' + i + '<// strong>:'; msg += skor [i]; msg += '<// p>'; }} this.element.innerHtml = msg; }};Sekarang mari kita lihat objek mediator (mediator). Saat game diinisialisasi, buat pemain dalam metode setup (), dan kemudian masukkan atribut pemain untuk penggunaan selanjutnya. Metode yang diputar () akan dipanggil oleh pemain setelah setiap putaran. Ini memperbarui tabel hash skor dan kemudian meneruskannya ke papan skor untuk ditampilkan. Metode terakhir adalah keypress (), yang menangani acara keyboard, memutuskan pemain mana yang memainkannya, dan memberitahukannya:
var mediator = {player: {}, setup: function () {var player = this.players; pemain.home = pemain baru ('home'); pemain.guest = pemain baru ('tamu'); }, play: function () {var player = this.players, skor = {home: playes.home.points, Guest: playes.guest.points}; SCOREBOARD.UPDATE (SCORE); }, keypress: function (e) {e = e || window.event; // IE if (e.WHich === 49) {// Key "1" mediator.players.home.play (); kembali; } if (e.which === 48) {// key "0" mediator.players.guest.play (); kembali; }}};Hal terakhir adalah menginisialisasi dan mengakhiri permainan:
// go! mediator.setup (); window.onkeypress = mediator.keypress; // game lebih dalam 30 detikSetTimeout (function () {window.onkeypress = null; alert ('game over!');}, 30000);Contoh 2: Menjual ponsel
var goods = { //Inventory 'red|32G':3, 'red|16G':5, 'blue|32G':3, 'blue|16G':6}//Intermediator var mediator = (function(){ function id(id){ return document.getElementById(id); } var colorSelect = id('colorSelect'), memorySelect = id('memorySelect'), numberInput = id ('numberInput'), colorInfo = id ('colorInfo'), memoryInfo = id ('memoryInfo'), numberInfo = id ('numberfo'), nextbtn = id ('nextbtn'); Barang [Color+| '+Memori]; Numberfo.innerHtml = Number;} if (! 0) {nextbtn.disabled = true; function () {mediator.changed (this);} numberInput.onchange = function () {mediator.changed (this);}Referensi: "pola javascript" "pola desain javascript dan praktik pengembangan"
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.