Функция шаблона посредника заключается в отключении тесной связи между объектами, которая также называется «посредником». Все объекты общаются через посредник, а не ссылаются друг на друга, поэтому, когда объект меняется, вам нужно только уведомлять посредника.
Например: командная башня аэропорта, каждый самолет должен только общаться с командной башней. Командная башня знает состояние полета каждого самолета, может организовать все время взлета и посадки, регулировать маршруты и т. Д.
Посредственная модель соответствует закону о димитиане, то есть принцип наименьшего знания, что означает, что объект должен знать как можно меньше о другом объекте. Если связь между объектами слишком высока, изменение объекта повлияет на многие объекты и будет трудно поддерживать. Когда соединение объекта жестко, трудно изменить один объект, не влияя на другие объекты.
Если сложная связь между объектами вызывает трудности при вызове и поддержании, и эти степени связи растут в геометрической прогрессии с изменениями в проекте, то мы можем рассмотреть вопрос о рефактории кода с помощью посредника! Посредники улучшают обслуживание кода за счет развязки.
Пример 1: игра
Объект Player создается через конструктор Player () и имеет свои собственные точки и атрибуты имени. Метод Play () на прототипе отвечает за добавление точки и уведомления посредника:
Функциональный игрок (имя) {this.points = 0; this.name = name;} player.prototype.play = function () {this.points += 1; mediator.played ();};Объект табло (табло) имеет метод Update (), который вызывается посредником после того, как каждый игрок заканчивает игру. Анализ вообще не знает никакой информации о игроке, и он не сохраняет результаты. Он отвечает только за отображение результатов, приведенных посредником:
var bassboard = {element: document.getElementByid ('results'), update: function (оценка) {var i, msg = '' '; for (i in score) {if (score.hasownproperty (i)) {msg + = '<p> <strong>' + i + '<// strong>:'; msg += оценка [i]; msg += '<// p>'; }} this.element.innerhtml = msg; }};Теперь давайте посмотрим на объект Mediator (Mediator). Когда игра инициализируется, создайте игрока в методе Setup (), а затем поместите атрибут игрока для последующего использования. Метод воспроизведения () будет вызван игроком после каждого раунда. Он обновляет хэш -таблицу счетов, а затем передает ее на табло для дисплея. Последний метод - keypress (), который обрабатывает события клавиатуры, решает, какой игрок играет его, и уведомляет:
var mediator = {players: {}, setup: function () {var players = this.players; игроки. Home = новый игрок ('Home'); Players.guest = новый игрок ('гость'); }, игра: function () {var players = this.players, score = {Home: player.home.points, guest: player.guest.points}; табло. }, keypress: function (e) {e = e || window.event; // т.е. if (e.which === 49) {// key "1" mediator.players.home.play (); возвращаться; } if (e.which === 48) {// key "0" mediator.players.guest.play (); возвращаться; }}};Последнее - инициализировать и закончить игру:
// go! Mediator.setup (); window.onkepress = mediator.keypress; // игра в 30 SecondSettimeout (function () {window.onkeypress = null; alert ('игра Over!');}, 30000);Пример 2: Продажа мобильного телефона
var Goals = {// 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 = id = id warmelect = id ('memoryselectemeired (id); id ('numberInput'), colorInfo = id ('colorinfo'), memoryInfo = id ('memoryInfo'), numberInfo = id ('numberInfo'), nextBtn = id ('nextBtn'); GOODS [COLURE+'|'+MEMORS]; numberInfo.innerhtml = number; NextBtn.disabled = true; mediator.changed (this);} numberinput.onchange = function () {mediator.changed (this);}Список литературы: «Паттерн JavaScript» «Образец проектирования и разработки JavaScript»
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.