В этой статье описывается внедрение функций с несколькими чатами на основе режима посредника. Поделитесь этим для вашей ссылки, следующим образом:
Определение шаблона
Паттерн медиатора использует объект -медиатор для инкапсуляции взаимодействия между серией объектов, поэтому в каждом объекте не нужно отображать другие экземпляры объекта, тем самым уменьшая степень связи между каждым объектом и независимо изменяя взаимосвязь между объектами.
Примеры второго режима
1 Анализ шаблона
Мы заимствуем несколько чат-комнат, чтобы проиллюстрировать этот шаблон
2 Статическая классовая диаграмма режима посредничества
3 примеры кода
3.1 Интерфейс посредник - Имедиатор
пакет com.demo.mediator; import com.demo.colleague.iuser;/** * Интерфейс посредник * * @author * */public interface imediator {/** * Зарегистрированная информация пользователя * * @param пользователь */public void Registration (пользователь iuser); / *** Отправить сообщение всем** @param пользователь* Отправить сообщение*/ public void notifyallmessage (iuser user);}3.2. Промежуточная реализация - бетонеедиатор
package com.demo.mediator;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import com.demo.colleague.IUser;/** * Intermediary implementation class* * @author * */public class ConcreteMediator implements IMediator { private final List<IUser> list = new ArrayList<IUser>(); / ** * Зарегистрированная информация пользователя * * @param пользователь */ public void regist (iuser user) {if (user! = Null &&! List.contains (user)) {list.add (user); }} / *** Отправить сообщение** @param пользователь* Отправить сообщение* / public void notifyallmessage (user user) {iterator <iuser> iterator = list.iterator (); Iuser tmpuser = null; while (iterator.hasnext ()) {tmpuser = iterator.next (); if (tmpuser! = null &&! tmpuser.equals (user)) {// исключать отправитель сообщения tmpuser.receivemessage (user.getmessage ()); }}}}3.3 Пользовательский интерфейс - iuser
пакет com.demo.colleague;/** * Пользовательский интерфейс * * @author * */public interface iuser {/** * Получить сообщение * * @param message * message */public void getivemessage (строковое сообщение); / *** Отправить сообщение** @param Сообщение* Сообщение*/ public void sendmessage (строковое сообщение); / ** * Получить содержимое сообщения отправлено * * @return */ public String getMessage ();}3.4 AbstractUser - Abstractuser
пакет com.demo.colleague; import com.demo.mediator.imedator;/** * Аннотация Информация о пользователе * * @author * */public Abstract Class AbstractUser реализует iUser {// посредник, защищенный имедиатор,; // Имя защищенного имени строки; // Сообщение о защищенном сообщении строки; Public Abstractuser (Imedator Mediator, String name) {this.Mediator = Mediator; this.name = name; } / *** Отправить сообщение** @param message* message* / public void sendmessage (string message) {this.message = сообщение; System.out.println (this.name + "say:" + this.message); mediator.notifyallmessage (это); } public String getMessage () {return message; }}3.5 Пользователь A - USERA
пакет com.demo.colleague; import com.demo.mediator.imediator;/** * Пользователь a * * @author * */public class usera extends rextableuser {public usera (imediator mediator, string name) {super (mediator, имя); // зарегистрироваться в mediator.regist (это); } / *** Метод получения сообщения* / public void eCetivemessage (String Message) {System.out.println («Пользователь полученное сообщение:» + message); }}3.6 Пользователь B - пользователь
пакет com.demo.colleague; import com.demo.mediator.imediator;/** * Пользователь b * * @author * */public class userb extends rastractuser {public userb (imediator mediator, string name) {super (mediator, имя); // зарегистрироваться в Mediator Object Mediator.regist (это); } / *** Метод получения сообщения* / public void eCetivemessage (String Message) {System.out.println ("Полученный пользователь B:" + Message); }}3.7 Пользователь C - USERC
пакет com.demo.colleague; import com.demo.mediator.imediator;/** * Пользователь c * * @author * */public class userc extends rextableuser {public userc (Imediator Mediator, название строки) {Super (Mediator, имя); // зарегистрироваться в Mediator Object Mediator.regist (это); } / *** Метод получения сообщения* / public void eCetivemessage (String Message) {System.out.println ("Пользователь C полученное сообщение:" + message); }}3.8 Запуск многопользовательской чата
пакет com.demo; import com.demo.colleague.iuser; import com.demo.colleague.usera; import com.demo.colleguge.userb; импорт com.demo.colleague.userc; импорт com.demo.mediator.concretemediator; import -com.demo.mediatortortaitor * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */public class client {/** *@param args */public static void main (string [] args) {// Создание чата (медиатор) imediator mediator = new Concetemediator (); // Создать пользовательскую информацию iuser usera = new Usera (Mediator, "Zhang San"); Iuser userb = new Userb (Mediator, "li Si"); Iuser userc = new Userc (Mediator, "Wang wu"); System.out .println ("==================================================================================== ============================================================================================= =========================================================================================================== ============================================================================================= .println ("============================================================== ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= .println ("============================================================== ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= ======================================================================= .println ("=====================================================================================================================================4 Результаты работы
====================================================================================
Чжан Сан сказал: «Привет всем, меня зовут Чжан Сан! Я новичок для вас, пожалуйста, позаботьтесь обо мне!
Пользователь B Полученное сообщение: Привет всем, меня зовут Чжан Сан! Я новичок для вас, пожалуйста, позаботьтесь обо мне!
Пользователь C Полученное сообщение: Привет всем, меня зовут Чжан Сан! Я новичок для вас, пожалуйста, позаботьтесь обо мне!
====================================================================================
====================================================================================
Ли Си сказал: Здравствуйте, меня зовут Ли Си, добро пожаловать в присоединение!
Пользователь полученное сообщение: Здравствуйте, меня зовут Ли Си, добро пожаловать в присоединение!
Пользователь C Полученное сообщение: Здравствуйте, меня зовут Li Si, добро пожаловать в присоединение!
====================================================================================
====================================================================================
Ван Ву сказал: Я Ван Ву, добро пожаловать!
Пользователь Полученное сообщение: Я Ван Ву, добро пожаловать!
Пользователь B Полученное сообщение: Я Ван Ву, добро пожаловать!
====================================================================================
Три принципа дизайна этого образца
1 зависимости от одного ко многим объектом преобразуются в зависимости один на один
2 Централизованный контроль улучшает возможности повторного использования класса
Четыре случая использования
(1) Группа объектов общается четко определенным, но сложным образом, что приводит к запутанной и трудности для понимания структуры взаимозависимости. Обратите внимание на взаимозависимость между несколькими объектами.
(2) Хотите настроить поведение, распространяемое по нескольким классам, но не хочу генерировать слишком много подклассов.
(3) Исследование и разработка архитектуры продукта требует больше возможностей для расширения.
Статическая диаграмма статической классы пять посредников
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Введение и расширенное учебное пособие по объектно-ориентированному программам Java», «Учебное пособие по структуре данных Java и алгоритм», «Суммарной навыки Java Dom Node», «Суммируют навыки работы навыков операции Java File File и Directory» и «Summary of Java CACEE CACEE».
Я надеюсь, что эта статья будет полезна для всех Java Programming.