ฟังก์ชั่นของรูปแบบสื่อกลางคือการตัดการเชื่อมต่อความสัมพันธ์ระหว่างการมีเพศสัมพันธ์ที่แน่นหนาระหว่างวัตถุซึ่งเรียกว่า 'ผู้ไกล่เกลี่ย' วัตถุทั้งหมดสื่อสารผ่านวัตถุตัวกลางแทนที่จะอ้างถึงกันและกันดังนั้นเมื่อวัตถุเปลี่ยนแปลงคุณจะต้องแจ้งตัวกลางเท่านั้น
ตัวอย่างเช่น: หอคอยคำสั่งของสนามบินแต่ละเครื่องบินแต่ละลำต้องสื่อสารกับหอคอยบัญชาการเท่านั้น หอบัญชาการรู้สถานะการบินของเครื่องบินแต่ละลำสามารถจัดเวลาขึ้นเครื่องและลงจอดทั้งหมดปรับเส้นทาง ฯลฯ
แบบจำลองตัวกลางสอดคล้องกับกฎหมาย Dimitian นั่นคือหลักการของความรู้น้อยที่สุดซึ่งหมายความว่าวัตถุควรรู้น้อยที่สุดเกี่ยวกับวัตถุอื่น หากการมีเพศสัมพันธ์ระหว่างวัตถุสูงเกินไปการเปลี่ยนวัตถุจะส่งผลกระทบต่อวัตถุจำนวนมากและยากที่จะรักษา เมื่อการมีเพศสัมพันธ์ของวัตถุแน่นมันเป็นเรื่องยากที่จะแก้ไขวัตถุหนึ่งชิ้นโดยไม่ส่งผลกระทบต่อวัตถุอื่น ๆ
หากการมีเพศสัมพันธ์ที่ซับซ้อนระหว่างวัตถุทำให้เกิดความยากลำบากในการโทรและการบำรุงรักษาและองศาการมีเพศสัมพันธ์เหล่านี้จะเพิ่มขึ้นอย่างทวีคูณกับการเปลี่ยนแปลงในโครงการเราสามารถพิจารณา refactoring รหัสด้วยรูปแบบตัวกลาง! ผู้ไกล่เกลี่ยปรับปรุงการบำรุงรักษารหัสผ่าน decoupling
ตัวอย่างที่ 1: เกม
วัตถุผู้เล่นถูกสร้างขึ้นผ่านตัวสร้าง Player () และมีคะแนนและแอตทริบิวต์ชื่อของตัวเอง วิธีการเล่น () บนต้นแบบมีหน้าที่ในการเพิ่มจุดให้ตัวเองและแจ้งตัวกลาง:
ฟังก์ชั่นเครื่องเล่น (ชื่อ) {this.points = 0; this.name = name;} player.prototype.play = function () {this.points += 1; mediator.played ();};วัตถุกระดานคะแนน (กระดานคะแนน) มีวิธีการอัปเดต () ซึ่งเรียกว่าตัวกลางหลังจากผู้เล่นแต่ละคนเล่นเสร็จ การวิเคราะห์ไม่ทราบข้อมูลใด ๆ เกี่ยวกับผู้เล่นเลยและไม่บันทึกคะแนน เป็นเพียงหน้าที่แสดงคะแนนที่กำหนดโดยตัวกลางเท่านั้น:
var scoreboard = {องค์ประกอบ: document.getElementById ('ผลลัพธ์'), อัปเดต: ฟังก์ชั่น (คะแนน) {var i, msg = ''; สำหรับ (I in score) {ถ้า (score.hasownproperty (i)) {msg + = '<p> <strong>' + i + '<// strong>:'; msg += คะแนน [i]; msg += '<// p>'; }} this.element.innerhtml = msg; -ตอนนี้ลองดูที่วัตถุสื่อกลาง (ผู้ไกล่เกลี่ย) เมื่อเกมเริ่มต้นให้สร้างผู้เล่นในวิธีการตั้งค่า () จากนั้นใส่แอตทริบิวต์ผู้เล่นสำหรับการใช้งานที่ตามมา วิธีการเล่น () จะถูกเรียกโดยผู้เล่นหลังจากแต่ละรอบ มันอัปเดตตารางคะแนนแฮชจากนั้นส่งผ่านไปยังกระดานคะแนนเพื่อแสดงผล วิธีสุดท้ายคือ keypress () ซึ่งจัดการเหตุการณ์คีย์บอร์ดตัดสินใจว่าผู้เล่นคนไหนเล่นและแจ้งให้ทราบ:
var mediator = {ผู้เล่น: {}, การตั้งค่า: function () {var players = this.players; players.home = ผู้เล่นใหม่ ('home'); ผู้เล่น. Guest = ผู้เล่นใหม่ ('แขก'); }, เล่น: function () {var players = this.players, score = {home: players.home.points, แขก: ผู้เล่น. guest.points}; scoreboard.update (คะแนน); }, keypress: function (e) {e = e || window.event; // เช่นถ้า (e.which === 49) {// key "1" mediator.players.home.play (); กลับ; } if (E.which === 48) {// key "0" mediator.players.guest.play (); กลับ; -สิ่งสุดท้ายคือการเริ่มต้นและจบเกม:
// go! mediator.setup (); window.onkeypress = mediator.keypress; // game ใน 30 วินาที Settimeout (ฟังก์ชั่น () {window.onkeypress = null; Alert ('Game Over!');}, 30000);ตัวอย่างที่ 2: ขายโทรศัพท์มือถือ
var goods = {// สินค้าคงคลัง 'สีแดง | 32g': 3, 'สีแดง | 16g': 5, 'สีน้ำเงิน | 32g': 3, 'สีน้ำเงิน | 16g': 6} // ตัวกลาง midiator var = (ฟังก์ชั่น () {id function id (id) id ('numberInput'), colorInfo = id ('colorinfo'), memoryInfo = id ('memoryInfo'), numberInfo = id ('numberInfo'), nextbtn = id ('nextbtn'); สินค้า [color+'|'+หน่วยความจำ]; numberinfo.innerhtml = number;} ถ้า (! nextbtn.disable = true; mediator.changed (this);} numberInput.onchange = function () {mediator.changed (นี่);}ข้อมูลอ้างอิง: "JavaScript Pattern" "JavaScript Design Pattern and Development Practice"
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น