C#设计模式实现-中介者模式(Media Partten)
含义:中介者模式是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。
优点: 1.降低了类的复杂度,将一对多转化成了一对一。
2.各个类之间的解耦
缺点:中介者会庞大,变得复杂难以维护。
主要解决:对象与对象之间存在大量的关联关系,这样势必会导致系统的结构变得很复杂,同时若一个对象发生改变,我们也需要跟踪与之相关联的对象,同时做出相应的处理。
使用场景: 1.系统中对象之间存在比较复杂的引用关系,导致它们之间的依赖关系结构混乱而且难以复用该对象。
2.想通过一个中间类来封装多个类中的行为,而又不想生成太多的子类。
C#示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mediaparten
{
public class ChatRoom
{
public delegate void CallDispMessage(User user, string s);
public CallDispMessage call;
public void showMessage(User user, String message)
{
call(user, message);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Mediaparten
{
public class User
{
private String name;
public ChatRoom chatroom;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public User(String name)
{
this.name = name;
chatroom = new ChatRoom();
}
public void sendMessage(User user, String message)
{
chatroom.showMessage(user, message);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Mediaparten
{
public partial class Form1 : Form
{
public User user;
public Form1()
{
InitializeComponent();
}
public void showmessage(User user,string s)
{
try
{
string str1 = user.getName();
string str2 = DateTime.Now.ToString();
string str3 = s;
listBox1.Items.Add(str1);
listBox1.Items.Add(str2);
listBox1.Items.Add(str3);
}
catch (Exception ex)
{
}
}
private void btn_John_Click(object sender, EventArgs e)
{
User John = new User("John");
John.chatroom.call += new ChatRoom.CallDispMessage(showmessage);
John.sendMessage(John,txtJohn.Text.ToString());
}
private void btn_Tom_Click(object sender, EventArgs e)
{
User Tom = new User("Tom");
Tom.chatroom.call += new ChatRoom.CallDispMessage(showmessage);
Tom.sendMessage(Tom, txtTom.Text.ToString());
}
}
}
C#设计模式实现-中介者模式(Media Partten)相关推荐
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
[索引页] [源码下载] 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern) 作者:webabcd 介绍 用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显式地相互 ...
- 设计模式(中介者模式-对象去耦)
声明:本系列文章内容摘自<iOS设计模式> 中介者模式 用一个对象来封装一系列对象的交互方式.中介者使个对象不需要显式地相互调用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 何时 ...
- Java设计模式之中介者模式(UML类图分析+代码详解)
大家好,我是一名在算法之路上不断前进的小小程序猿!体会算法之美,领悟算法的智慧~ 希望各位博友走过路过可以给我点个免费的赞,你们的支持是我不断前进的动力!! 加油吧!未来可期!! 本文将介绍java设 ...
- 软件设计模式之中介者模式实验
软件设计模式之中介者模式实验 一.实验目的 掌握软件设计模式中的中介者模式,能够用中介者模式编写程序,解决实际问题. 二.实验内容与要求 内容:有个租房中介为房主和租赁人提供租房服务,请用中介者模式对 ...
- 走穿java23种设计模式--18中介者模式详解
走穿java23种设计模式–18中介者模式详解 中介者模式也称调停者模式,是一种比较简单的模式. 一.中介者模式的现实场景 蔡良因为上次表白时对方只看重他的物质方面,所以他对女朋友这个问题有点失望.因 ...
- 设计模式之中介者模式(Mediator)摘录
23种GOF设计模式一般分为三大类:创建型模式.结构型模式.行为模式. 创建型模式抽象了实例化过程,它们帮助一个系统独立于如何创建.组合和表示它的那些对象.一个类创建型模式使用继承改变被实例化的类,而 ...
- 设计模式复习-中介者模式
#pragma once #include "stdafx.h" #include<map> #include<set> #include<strin ...
- 【设计模式】中介者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )
文章目录 一.中介者模式简介 二.中介者模式适用场景 三.中介者模式优缺点 四.中介者模式 与 观察者模式 五.中介者模式 代码示例 1.聊天室 2.用户 3.运行实例 一.中介者模式简介 中介者模式 ...
- 再起航,我的学习笔记之JavaScript设计模式23(中介者模式)
中介者模式 概念介绍 中介者模式(Mediator):通过中介者对象封装一系列对象之间的交互,使对象之间不再相互引用降低他们之间的耦合,有时中介者对象也可以改变对象之间的交互. 创建一个中介 中介者模 ...
最新文章
- MySQL从5.7.32升级到8.0.22
- C#正则表达式匹配字符串中的数字
- HP-UX B.11.31从安装到VG配置
- From Hero to Zero
- spring 入门 1
- 03-JavaScript
- Invoke and BeginInvoke BeginInvoke和EndInvoke方法 (转)2
- jms.jar 2.0_JMS API 2.0生产者和使用者
- HDU1712:ACboy needs your help(分组背包)
- 六大设计原则(三)DIP依赖倒置原则
- 独角兽影视APP系统源码/双端影视APP源码
- 博弈论概述 (转自百度百科)
- 查看WiFi记录日志
- golang 支付宝小程序 登陆
- 【无标题】申请测绘资质的详细流程及所需详细资料有哪些?
- 2021年第一季度中国电竞行业网络关注度分析报告
- 翻出2018的Java84班的二阶段项目-商城项目
- docx行间距怎么设置_word怎么调整行间距的两种方法
- 小游戏---2048
- c语言中十六进制乘以16啥意思,C语言16进制中16怎么表示?