Form界面的各组件的工作原理---中介者模式

在VS项目开发过程中,我们创建一个页面后,系统为我们自动生成一些代码(.aspx,.cs),一个用于前台控件的摆放、另一个用于编写控件对应的事件操作。例如:我们在双击按钮后,系统自动生成一段Click的代码并在里面填写我们想要的操作。为什么界面上很多的按钮他们相互之间的操作都互不受影响?因为控件在操作的时候,不是自己操作自己,而是产生事件并发送的Form界面;再由Form界面按照接收到的事件,转发到对应的操作中;这样Form就起到中介的作用;这就是中介模式的实际应用案例。

我们先看看定义:用一个中介对象封装一组对象的交互,中介者使得各对象之间不需要显示的进行相互的引用,降低彼此之间的耦合性,而且可以独立的改变他们之间的交互。

代码区域:

中介者做的事情就是传递消息,减少同事类之间单独的耦合;所以必须要有消息发送功能。

abstract class Mediactor
{
	//定义一个抽象的发送消息方法,获取同事对象、消息
	public abstract void Send(string message,Colleague colleague);
}

同事抽象类,需要知道是哪个中介者对象在帮忙进行传递消息,因此需要声明一个中介者对象存储;

abstract class Colleague
{
	protected Mediactor mediactor;
	public Colleague(Mediactor mediactor)
	{
		this.mediactor =mediactor;
	}
}

具体的同事类,在消息发的时候,需借助于中介者对象,将消息发送出去;

class ConcreteColleague1:Colleague
{
	public ConcreteColleague1(Mediactor mediactor):base(mediactor)
	{}
	public void Send(string message)
	{
		mediactor.Send(message,this);
	}
	public void Notify( string message)
	{
		Console.WriteLine("同事1获取的消息:"+message);
	}
}

class ConcreteColleague2:Colleague
{
    //将中介者对象传入进去,应需要通过中介者对象传递数据
	public ConcreteColleague2(Mediactor mediactor):base(mediactor)
	{}
	public void Send(string message)
	{
		mediactor.Send(message,this);
	}
	public void Notify( string message)
	{
		Console.WriteLine("同事2获取的消息:"+message);
	}
}

具体的中介者类,功能相对复杂,它需要知道所有的同事类对象、知道消息是谁传来,是谁需要接受。

//具体的中介类需要定义所有的同事类对象并要处理他们消息相互的传递

class ConcreteMediactor:Mediactor

{

//需要声明所有的同事类对象

private ConcreteColleague1 colleague1;

private ConcreteColleague2 colleague2;

public ConcreteColleague1 Colleague1

{

set{colleague1=value;}

}

public ConcreteColleague2 Colleague2

{

set{colleague2=value;}

}

public override void Send(string message,Colleague colleague)

{

//收集所有同事对象的消息并转发到对应的同事

if(colleague==colleague1)

{

colleague2.Notify(message);

}

else

{

colleague1.Notify(message);

}

}

}

客户端代码:

static void Main(string[] arg)
{
	ConcreteMediactor mediactor=new ConcreteMediactor();
	ConcreteColleague1 colleague1=new ConcreteColleague1(mediactor);
	ConcreteColleague2 colleague2=new ConcreteColleague2(mediactor);
	mediactor.Colleague1=colleague1;
	mediactor.Colleague2=colleague2;
	colleague1.Send("借100W?");
	colleague2.Send("没有");

}

在这中模式关键点:1.在创建同事类对象时,需要知道中介者是谁(构造方法中初始化赋值);2,具体的中介者类中,需要知道所有的同事类对象信息。因此,如果系统非常庞大的时候就难于管理了。我们在使用的时需要尽量减少使用此模式的应用。用在刀刃上最适合。

时间: 2024-10-22 02:58:40

Form界面的各组件的工作原理---中介者模式的相关文章

mysql之mysql组件和工作原理

mysql组成: 连接管理器        负责监听在某个端口套接字上,并接受用户请求. 线程管理器:        负责给用户的请求生成新的线程,在请求完成后负责销毁进程或完成进程的重用. 用户模块:        验证用户是否有权限连接服务器.验证用户的身份. 命令分发模块:        根据查询的不同类型,和缓存模块交互,和日志模块交互.若缓存中没有则交给解析器处理,需要记录日志的交给日志模块. 解析器:        解析查询的法和词法,再次查询缓存,没有则生成解析树.若是SELECT

FTP协议及工作原理

1. FTP协议 什么是FTP呢?FTP 是 TCP/IP 协议组中的协议之一,是英文File Transfer Protocol的缩写. 该协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明 和可靠高效地传送数据.简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载 (download)”文件.若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)

RAC 工作原理和相关组件(三) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体系的总结,一则进行回顾复习,另则便于查询使用.本图文文档亦源于此.阅读Oracle RAC安装与使用教程前,笔者先对这篇文章整体构思和形成进行梳理.由于阅读者知识储备层次不同,我将从Oracle RAC安装前的准备与规划开始进行整体介绍安装部署Oracle RAC.始于唐博士指导,对数据库集群进行配置安装,前

(转)AJAX工作原理及其优缺点

1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML+CSS来标准化呈现:使用XML和XSLT进行数据交换及相关操作:使用XMLHttpRequest对象与Web服务器进行异步数据通信: 使用Javascript操作Document Object Model进行动态显示及交互: 使用JavaScript绑定和处理所有数据. 2.与传统的we

[转]AJAX工作原理及其优缺点

1.什么是AJAX?AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML+CSS来标准化呈现:使用XML和XSLT进行数据交换及相关操作:使用XMLHttpRequest对象与Web服务器进行异步数据通信: 使用Javascript操作Document Object Model进行动态显示及交互: 使用JavaScript绑定和处理所有数据. 2.与传统的web应用比较

AJAX工作原理及其优缺点

1.什么是AJAX? AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用: 使用XHTML+CSS来标准化呈现: 使用XML和XSLT进行数据交换及相关操作: 使用XMLHttpRequest对象与Web服务器进行异步数据通信: 使用Javascript操作Document Object Model进行动态显示及交互: 使用JavaScript绑定和处理所有数据. 2.与传统的web

[转载]AJAX工作原理及其优缺点

AJAX工作原理及其优缺点 1.什么是AJAX?AJAX全称为"Asynchronous JavaScript and XML"(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术.它使用:使用XHTML+CSS来标准化呈现:使用XML和XSLT进行数据交换及相关操作:使用XMLHttpRequest对象与Web服务器进行异步数据通信: 使用Javascript操作Document Object Model进行动态显示及交互: 使用JavaScript绑定和处理

Tomcat中JSP引擎工作原理

http://blog.csdn.net/linjiaxingqqqq/article/details/7164449 JSP运行环境: 执行JSP代码需要在服务器上安装JSP引擎,比较常见的引擎有WebLogic和Tomcat.把这些支持JSP的web服务器配置好后.就可以再客户端通过浏览器来访问JSP页面了.默认端口一般是7001. JSP生命周期: JSP处理请求的方法就是把这些请求都统一看做Servlet.由于这个原因,JSP的很多功能和生命周期,都由Java Servlet技术标准定义