CSharp设计模式读书笔记(18):中介者模式(学习难度:★★★☆☆,使用频率:★★☆☆☆)...

中介者模式(Mediator Pattern):用一个中介对象(中介者)来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,中介者模式又称为调停者模式。

模式角色与结构:

示例代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace CSharp.DesignPattern.MediatorPattern
{class Program{static void Main(string[] args){}}// 抽象中介者abstract class Mediator{protected List<Colleague> colleagues; // 用于存储同事对象public void Register(Colleague colleague){colleagues.Add(colleague);}public abstract void Operation();}class ConcreteMediator : Mediator{public override void Operation(){// ...((Colleague)colleagues[0]).ToString(); // 通过中介者调用同事类的方法// ...
        }}// 抽象同事类abstract class Colleague{protected Mediator mediator; // 维持一个抽象中介者的引用public Colleague(Mediator mediator){this.mediator = mediator;}public abstract void Method1(); // 声明自身方法,处理自己的行为,共中介者调用// 定义依赖方法,与中介者进行通信public void Method2(){mediator.Operation();}}class ConcreteColleague : Colleague{public ConcreteColleague(Mediator mediator): base(mediator){ }public override void Method1(){// ...
        }}
}

 

转载于:https://www.cnblogs.com/thlzhf/p/3993769.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/264365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux四种集群是什么,lvs四种集群特点及使用场景

一、 前言当一组服务器在高速的局域网或广域网中相互连接&#xff0c;其前端部署了一个负责负载调度的调度器(Director)的服务器系统。调度器能将网络请求无缝调度到真实服务器上(Real server)&#xff0c;客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一…

BroadcastReceiver应用详解(转)

转自&#xff1a; http://blog.csdn.net/liuhe688/article/details/6955668 問渠那得清如許&#xff1f;為有源頭活水來。南宋.朱熹《觀書有感》 据说程序员是最爱学习的群体&#xff0c;IT男都知道&#xff0c;这个行业日新月异&#xff0c;必须不断地学习新知识&#xff0c;不…

如何在 Windows Server 2003、Windows 2000 和 Windows XP 中备份恢复代理的加密文件系统 (EFS) 私钥...

本 文介绍了如何在运行 Microsoft Windows Server 2003、Microsoft Windows 2000 或 Microsoft Windows XP 的计算机上备份恢复代理加密文件系统 (EFS) 私钥。当位于本地计算机上的 EFS 私钥副本丢失时&#xff0c;请使用恢复代理的私钥恢复数据。本文包含有关如何使用证书导出…

你可能从未听过的 Linux 发行版

Hanthana Linux 官方主页&#xff1a;http://www.hanthana.org Hanthana Linux 基于 Fedora&#xff0c;主要面向 IT 教育&#xff0c;默认包含额外的编/解码器及多媒体播放器。它提供可安装到硬盘的 LiveDVD&#xff0c;支持 i686 和 x86_64 架构。 ROSA Linux 官方主页&#…

从壹开始 [vueAdmin后台] 之三 || 动态路由配置 项目快速开发

回顾 今天VS 2019正式发布&#xff0c;实验一波&#xff0c;你安装了么&#xff1f;Blog.Core 预计今天会升级到 Core 3.0 版本。 哈喽大家周三好&#xff01;本来今天呢要写 Id4 了&#xff0c;但是写到了一半&#xff0c;突然有人问到了关于 Blog.Admin 管理后台的一些问题&a…

c语言支持默认参数吗,嵌入式C语言可以带“默认参数”的函数吗

描述(文章来源&#xff1a;嵌入式时代)使用C开发过程序时&#xff0c;定义函数可以指定默认参数&#xff0c;例如 void fun(int x, int y3); 在调用 fun() 时第二个参数可以不传递&#xff0c;此时 fun() 函数默认第二个参数等于 3&#xff0c;例如 f(1) 就相当于 f(1,3)。这是…

《从零开始学习ASP.NET MVC 1.0》-开天辟地入门篇

《从零开始学习ASP.NET MVC 1.0》 文章导航 (一) 开天辟地入门篇 (二) 识别URL的Routing组件 (三) Controller/Action 深入解析与应用实例 (四) View/Model 全解 (五) ViewEngine 深入解析与应用实例 一.摘要 随着ASP.NET MVC 1.0版本的正式发布, 我将本系列文章也更新到了1.0,…

制作放两个小图片的按钮 - 回复 xhui 的问题

为什么80%的码农都做不了架构师&#xff1f;>>> 问题来源: http://www.cnblogs.com/del/archive/2009/03/12/1409708.html#1475240 本例效果图: 自定义的类(TMyButton): unit Unit2;interfaceusesWindows, Messages, Classes, Graphics, StdCtrls;typeTMyButton c…

c语言 指针 pdf,深入理解c指针 PDF扫描版[33MB]

深入理解C指针 内容简介&#xff1a;深入理解C指针和内存管理&#xff0c;提升编程效率&#xff01;这是一本实战型图书&#xff0c;通过它&#xff0c;读者可以掌握指针动态操控内存的机制、对数据结构的增强支持&#xff0c;以及访问硬件等技术。本书详细阐述了如何在数组、字…

使用SQL Server 2008提供的表分区向导

表分区&#xff08;Partition Table)是自从SQL Server 2005就开始提供的功能&#xff0c;解决的问题是大型表的存储和查询。 我们之前大致的语法是这样的 -- -- 演示&#xff1a;陈希章 -- 如何创建分区函数 -- 如何创建分区架构 -- 如何创建分区表 -- alter database adventu…

唤醒控件曾经拥有的能力

为什么80%的码农都做不了架构师&#xff1f;>>> 控件的祖先 TControl 有很多功能, 但它的有些子孙确丧失了很多(为了专用). 譬如 TBevel 就没有把一些常规的事件继承下来, 那些没有被继承的功能一般都隐藏在 protected 区, 如果重新继承是可以使用的. 这里尝试了另…

c语言掌上通,计算机二级C语言掌上通在哪下载安装?计算机掌上通好用吗?

计算机二级C语言掌上通在哪下载安装&#xff1f;计算机二级C语言掌上通好用吗&#xff1f;相信很多想要考计算机二级C语言的学生都在努力的复习背题库&#xff0c;而现在只要使用计算机二级C语言掌上通就能够随时随地刷题了。一、计算机二级C语言掌上通怎么下载1、滑动手机&…

[原]RHCS集群的服务切换测试札记

估计使用Red Hat或者CentOS做HA集群的朋友多数都会选择RedHat Cluster Suite&#xff08;RHCS&#xff09;这个套件来做吧。本篇主要记录构建及测试时候的情况。 poweroff 和 reboot 这种常规操作的服务切换取决于 recovery"relocate" 这个参数&#xff0c;在图形化界…

理解 Delphi 的类(十) - 深入方法[17] - 提前声明

为什么80%的码农都做不了架构师&#xff1f;>>> //要点17: 如果前面的方法要调用后面的方法, 后面的方法需要提前声明 function MyFunB(x: Integer): Integer; forward; {使用 forward 指示字提前声明}function MyFunA(x: Integer): Integer; beginResult : MyFunB…

本地仓库推送到远程仓库:fatal: refusing to merge unrelated histories

最近&#xff0c;在操作git的时候&#xff0c;遇到各种问题&#xff0c;下面总结一下。 最开始&#xff0c;我不是先把远程仓库拉取到本地 &#xff0c;而是直接在本地先创建一个仓库&#xff0c;再git remote add添加远程仓库。 当然&#xff0c;gitee官方还是有操作指南&…

C#开发微信门户及应用(18)-微信企业号的通讯录管理开发之成员管理

在上篇随笔《C#开发微信门户及应用(17)-微信企业号的通讯录管理开发之部门管理》介绍了通讯录的部门的相关操作管理&#xff0c;通讯录管理包括部门管理、成员管理、标签管理三个部分&#xff0c;本篇主要介绍成员的管理操作&#xff0c;包括创建、删除、更新、获取、获取部门成…

转载--【笔记】Asp.Net构架(Http请求处理流程)

转载--【笔记】Asp.Net构架(Http请求处理流程) 最近接触了一些Asp.Net开发人员&#xff0c;在聊到技术的时候&#xff0c;发现很多的Asp.Net开发人员都不明白在ASP.NET中一个页面请求的处理流程&#xff0c;今天自己在反思的过程中&#xff0c;发现我自己对这个也是一知半解&am…

SSL/TLS协议运行机制的概述

互联网的通信安全&#xff0c;建立在SSL/TLS协议之上。 本文简要介绍SSL/TLS协议的运行机制。文章的重点是设计思想和运行过程&#xff0c;不涉及具体的实现细节。如果想了解这方面的内容&#xff0c;请参阅RFC文档。 一、作用 不使用SSL/TLS的HTTP通信&#xff0c;就是不加密的…

margin塌陷

一&#xff1a;什么是margin塌陷 在标准文档流中&#xff0c;竖直方向的margin会出现叠加现象&#xff08;水平方向不会塌陷&#xff09;&#xff0c;两个margin紧挨着&#xff0c;中间没有border或者paddingmargin直接接触&#xff0c;就产生了合并表现为较大的margin会覆盖掉…

Redis链表实现

链表在 Redis 中的应用非常广泛&#xff0c; 比如列表键的底层实现之一就是链表&#xff1a; 当一个列表键包含了数量比较多的元素&#xff0c; 又或者列表中包含的元素都是比较长的字符串时&#xff0c; Redis 就会使用链表作为列表键的底层实现。除了链表键之外&#xff0c; …