您的位置:首页 > 其它

Patterns in SOME –Mediator

2007-03-01 14:03 429 查看
[align=left][/align]
[align=left]Code in C#:[/align]
[align=left] [/align]
[align=left]namespace Mediator_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] class Mediator [/align]
[align=left] {[/align]
[align=left] private DataProviderColleague dataProvider;[/align]
[align=left] private DataConsumerColleague dataConsumer;[/align]
[align=left] public void IntroduceColleagues(DataProviderColleague c1, DataConsumerColleague c2)[/align]
[align=left] {[/align]
[align=left] dataProvider = c1;[/align]
[align=left] dataConsumer = c2; [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void DataChanged()[/align]
[align=left] {[/align]
[align=left] int i = dataProvider.MyData;[/align]
[align=left] dataConsumer.NewValue(i);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class DataConsumerColleague [/align]
[align=left] {[/align]
[align=left] public void NewValue(int i)[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("New value {0}", i);[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class DataProviderColleague[/align]
[align=left] {[/align]
[align=left] private Mediator mediator;[/align]
[align=left] private int iMyData=0;[/align]
[align=left] public int MyData [/align]
[align=left] {[/align]
[align=left] get [/align]
[align=left] {[/align]
[align=left] return iMyData;[/align]
[align=left] }[/align]
[align=left] set [/align]
[align=left] {[/align]
[align=left] iMyData = value;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] public DataProviderColleague(Mediator m)[/align]
[align=left] {[/align]
[align=left] mediator = m;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void ChangeData()[/align]
[align=left] {[/align]
[align=left] iMyData = 403;[/align]
[align=left] [/align]
[align=left] // Inform mediator that I have changed the data[/align]
[align=left] if (mediator != null)[/align]
[align=left] mediator.DataChanged(); [/align]
[align=left] } [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] { [/align]
[align=left] Mediator m = new Mediator();[/align]
[align=left] DataProviderColleague c1 = new DataProviderColleague(m);[/align]
[align=left] DataConsumerColleague c2 = new DataConsumerColleague();[/align]
[align=left] m.IntroduceColleagues(c1,c2);[/align]
[align=left] [/align]
[align=left] c1.ChangeData();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]

CMediator -> CDataProviderColleague[_dataProvider],->CDataConsumerColleague[_dataConsumer]
IntroduceColleagues(CDataProviderColleague, CDataConsumerColleague)
DataChanged()

CDataConsumerColleague
NewValue(int)

CDataProviderColleague ->CMediator[_mediator]
int MyData
(CMediator) /* means the parameter will be assigned to _mediator*/
ChangeData()

CClient
main

CClient.main
{
CMediator m.();
CDataProviderColleague c1.(_mediator=m);
CDataConsumerColleague c2.();
m.IntroduceColleagues(_dataProvider = c1,_dataConsumer = c2);

c1.ChangeData()
{
<% if(mediator != null )%>
<%{ %>
_mediator.DataChanged()
{
int i = dataProvider.MyData;
_dataConsumer.NewValue(i)
{
<% Console.WriteLine("New value {0}", i); %>
};
};
<%} %>
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: