1. สรุปโดยรวม
1. ผู้เขียนพูดสั้น ๆ เกี่ยวกับเรื่องนี้
มาเป็นตัวอย่างง่ายๆจากชีวิตประจำวันของเรา เมื่อเราไปที่หน่วยงานด้านอสังหาริมทรัพย์เพื่อเช่าบ้านหน่วยงานด้านอสังหาริมทรัพย์จะจัดตั้งตัวกลางระหว่างผู้เช่าและผู้ให้เช่าของเจ้าของบ้าน ผู้เช่าไม่สนใจว่าเขาเช่าใคร ผู้ให้เช่าของเจ้าของบ้านไม่สนใจว่าเขาจะเช่าใคร การทำธุรกรรมนี้สะดวกมากเนื่องจากการมีอยู่ของตัวกลาง
ในระหว่างกระบวนการพัฒนาซอฟต์แวร์ย่อมมีสถานการณ์ที่หลายคลาสหรือระบบย่อยโต้ตอบซึ่งกันและกันและการโต้ตอบมีความซับซ้อนมากส่งผลให้แต่ละชั้นเรียนรู้คลาสที่จำเป็นต้องมีปฏิสัมพันธ์ ร่างกายทั้งหมดได้รับผลกระทบจากการเคลื่อนไหวครั้งเดียวและผลที่ตามมาก็ร้ายแรงมากและหมีตัวใหญ่ก็โกรธมาก! -
โอเคเนื่องจากคำถามได้รับการยกมาโปรดเชิญตัวเอกของเราในประเด็นนี้ - โมเดลตัวกลางที่จะปรากฏ
ฟังก์ชั่นของตัวกลางคือการห่อหุ้มปฏิสัมพันธ์ระหว่างวัตถุ หากการดำเนินการของวัตถุจะทำให้เกิดการเปลี่ยนแปลงวัตถุอื่น ๆ ที่เกี่ยวข้องและวัตถุนี้ไม่ต้องการจัดการกับความสัมพันธ์เหล่านี้ด้วยตัวเองคุณสามารถค้นหาตัวกลางและปล่อยให้มันจัดการกับความสัมพันธ์ที่ลำบากเหล่านี้ ดูตัวอย่างเล็ก ๆ ต่อไปนี้:
การคัดลอกรหัสมีดังนี้:
VAR assugent = function (ชื่อ) {
this.name = ชื่อ;
this.chatroom = null;
-
ผู้เข้าร่วม. prototype = {
ส่ง: ฟังก์ชั่น (ข้อความถึง) {
this.chatroom.send (ข้อความ, this, to);
-
รับ: ฟังก์ชั่น (ข้อความจาก) {
log.add (from.name + "ถึง" + this.name + ":" + ข้อความ);
-
-
var chatroom = function () {
ผู้เข้าร่วม var = {};
กลับ {
ลงทะเบียน: ฟังก์ชั่น (ผู้เข้าร่วม) {
ผู้เข้าร่วม [ผู้เข้าร่วมชื่อ] = ผู้เข้าร่วม;
ผู้เข้าร่วม. Chatroom = this;
-
ส่ง: ฟังก์ชั่น (ข้อความ, จาก, ถึง) {
ถ้า (ถึง) {
to.receive (ข้อความจาก);
} อื่น {
สำหรับ (คีย์ในผู้เข้าร่วม) {
if (ผู้เข้าร่วม [key]! == จาก) {
ผู้เข้าร่วม [คีย์] .receive (ข้อความจาก);
-
-
-
-
-
-
var log = (function () {
var log = "";
กลับ {
เพิ่ม: ฟังก์ชัน (msg) {log + = msg + "/n"; -
แสดง: function () {Alert (บันทึก); log = ""; -
-
-
ฟังก์ชั่นเรียกใช้ () {
var yoko = ผู้เข้าร่วมใหม่ ("yoko");
var John = ผู้เข้าร่วมใหม่ ("John");
var paul = ผู้เข้าร่วมใหม่ ("Paul");
var ringo = ผู้เข้าร่วมใหม่ ("ringo");
var chatroom = new Chatroom ();
ROOM.ROM.REGISTER (YOKO);
ห้องแชทบันทึก (จอห์น);
ROOM.ROM.REGISTER (PAUL);
ROOM.ROM.REGISTER (RINGO);
yoko.send ("สิ่งที่คุณต้องการคือความรัก");
yoko.send ("ฉันรักคุณจอห์น");
John.Send ("เฮ้ไม่จำเป็นต้องออกอากาศ", โยโกะ);
Paul.Send ("ฮ่าฉันได้ยินอย่างนั้น!");
Ringo.Send ("Paul คุณคิดยังไง" Paul);
log.Show ();
-
ในรหัสตัวอย่างเรามีผู้เข้าร่วมสี่คนเข้าร่วมเซสชันการแชทโดยลงทะเบียนห้องแชท (Mediary) ตัวแทนของผู้เข้าร่วมสำหรับผู้เข้าร่วมแต่ละคน ผู้เข้าร่วมส่งข้อความถึงกันและกันและดำเนินการเส้นทางไปยังห้องสนทนา
วัตถุห้องสนทนาที่นี่มีบทบาทของตัวกลางประสานงานวัตถุอื่น ๆ จัดระเบียบพวกเขาอย่างสมเหตุสมผลและลดการมีเพศสัมพันธ์
2. การอ้างอิงกรณีรหัสซอร์สโค้ด
เราควรจะคุ้นเคยกับโมเดล Solid Model สามชั้น MVC (รุ่น), ดูเลเยอร์การนำเสนอ (มุมมอง) และเลเยอร์ควบคุม (ควบคุม/สื่อกลาง)
เลเยอร์ควบคุมเป็นตัวกลางระหว่างเลเยอร์การนำเสนอและเลเยอร์โมเดล โดยทั่วไปแล้ว MVC ยังเป็นแอปพลิเคชันของโมเดลตัวกลางในการออกแบบเฟรมเวิร์ก
3. บทนำกรณี
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นเครื่องเล่น (ชื่อ) {
this.points = 0;
this.name = ชื่อ;
-
player.prototype.play = function () {
this.points += 1;
mediator.played ();
-
var scoreboard = {
องค์ประกอบ: document.getElementById ('ผลลัพธ์')
อัปเดต: ฟังก์ชั่น (คะแนน) {
var i, msg = '';
สำหรับ (ฉันเป็นคะแนน) {
if (score.hasownproperty (i)) {
msg + = '<p> <strong>' + i + '<// strong>:';
msg += คะแนน [i];
msg += '<// p>';
-
-
this.element.innerhtml = msg;
-
-
var mediator = {
ผู้เล่น: {},
การตั้งค่า: function () {
var players = this.players;
players.home = ผู้เล่นใหม่ ('home');
ผู้เล่น. Guest = ผู้เล่นใหม่ ('แขก');
-
เล่น: ฟังก์ชั่น () {
var players = this.players,
คะแนน = {
หน้าแรก: players.home.points,
แขก: ผู้เล่น. guest.points
-
scoreboard.update (คะแนน);
-
Keypress: function (e) {
E = E || window.event;
ถ้า (E.which === 49) {
mediator.players.home.play ();
กลับ;
-
if (e.which === 48) {
mediator.players.guest.play ();
กลับ;
-
-
-
mediator.setup ();
window.onkeypress = mediator.keypress;
settimeout (function () {
window.onkeypress = null;
console.log ('Game Over!');
}, 30000);
สี่มาสรุปกันเถอะ
ทำไมต้องเป็นคนกลาง?
มีการโต้ตอบมากมายระหว่างวัตถุ การดำเนินการเชิงพฤติกรรมของวัตถุแต่ละรายการขึ้นอยู่กับซึ่งกันและกันเพื่อปรับเปลี่ยนพฤติกรรมของวัตถุหนึ่งและในเวลาเดียวกันก็เกี่ยวข้องกับการปรับเปลี่ยนพฤติกรรมของวัตถุอื่น ๆ
หากคุณใช้โหมดสื่อกลางการมีเพศสัมพันธ์ระหว่างแต่ละวัตถุสามารถคลายได้ คุณเพียงแค่ต้องใส่ใจเกี่ยวกับความสัมพันธ์กับผู้ไกล่เกลี่ยและเปลี่ยนความสัมพันธ์แบบหลายต่อหลายครั้งให้กลายเป็นความสัมพันธ์แบบหนึ่งต่อหลายคน
มันสามารถลดความซับซ้อนของระบบและปรับปรุงความสามารถในการปรับขนาดที่ปรับเปลี่ยนได้
โอกาสที่ใช้แบบจำลองตัวกลาง
1. ชุดวัตถุที่กำหนดไว้อย่างดีซึ่งตอนนี้ต้องการการสื่อสารที่ซับซ้อน
2. ปรับแต่งพฤติกรรมที่กระจายในหลายคลาสโดยไม่ต้องการสร้างคลาสย่อยมากเกินไป
จะเห็นได้ว่าวัตถุการไกล่เกลี่ยส่วนใหญ่จะใช้เพื่อห่อหุ้มพฤติกรรมและผู้เข้าร่วมในพฤติกรรมคือวัตถุเหล่านั้น แต่ผ่านสื่อกลางวัตถุเหล่านี้ไม่จำเป็นต้องรู้จักกัน (การดำเนินการตามกฎหมายของ Dimit เฉพาะ)
ข้อดีของการใช้แบบจำลองตัวกลาง:
1. ลดการมีเพศสัมพันธ์ระหว่างวัตถุระบบทำให้วัตถุง่ายที่จะนำกลับมาใช้ใหม่อย่างอิสระ
2. ปรับปรุงความยืดหยุ่นของระบบและทำให้ระบบขยายและบำรุงรักษาง่าย
ข้อเสียของการใช้รูปแบบสื่อกลาง:
ข้อเสียของแบบจำลองตัวกลางนั้นชัดเจนเนื่องจาก "ตัวกลาง" นี้ถือว่ามีความรับผิดชอบมากขึ้นดังนั้นเมื่อมีปัญหากับวัตถุตัวกลางระบบทั้งหมดจะได้รับผลกระทบอย่างมาก