当前位置: 首页 > >

C#面向对象设计模式16:中介者模式(Mediator)

发布时间:

中介者模式,先占位,由于文章太耗时,后面补上。



using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;

namespace SimpleFactory
{
class Program
{
static void Main(string[] args)
{
走位 servicer = new 走位();
水台 shuitai = new 水台();
打荷 dahe = new 打荷();
厨师 chushi = new 厨师();
控制中心 controller = new 厨房控制中介者(servicer, shuitai, dahe, chushi);

servicer.客人下单("酸菜鱼");
servicer.作业完成();

Console.WriteLine();

shuitai.作业完成();
Console.WriteLine();

dahe.作业完成();
Console.WriteLine();

chushi.作业完成();
}
}

///


/// 走位就是服务员
///

public class 走位
{
private 控制中心 _controller;
public 走位()
{
}

internal void 设置控件中心(控制中心 controller)
{
this._controller = controller;
}

private string _菜;
public void 客人下单(string 菜)
{
this._菜 = 菜;
}

public void 取餐()
{
Console.WriteLine($"走位取了一份餐{this._菜}");
}

public void 作业完成()
{
Console.WriteLine($"请各位同事注意,客人下单,来一份{this._菜},我把小票放在窗台上了");
//过了很多分钟后,作业完成,并发出通知
this._controller.通知(1);
}
}

///
/// 厨师就是烧菜的厨子
///

public class 厨师
{
private 控制中心 _controller;
public 厨师()
{

}

internal void 设置控件中心(控制中心 controller)
{
this._controller = controller;
}

public void 制作()
{
Console.WriteLine("厨师做出了一道鲜美的酸菜鱼");
}

public void 作业完成()
{
//过了很多分钟后,作业完成,并发出通知
this._controller.通知(99);
}
}

///
/// 水台就是做各种海鲜产生的称重宰杀洗净等工作的人
///

public class 水台
{
private 控制中心 _controller;
public 水台()
{
}

internal void 设置控件中心(控制中心 controller)
{
this._controller = controller;
}

private double _重量;
public void 选鱼()
{
var weight = 1.6d;
this._重量 = weight;
Console.WriteLine($"水台从鱼池里拿出了一条重达{weight}斤的鱼。");
}

public void 杀鱼()
{
Console.WriteLine("水台已经把鱼杀好了");
}

public void 作业完成()
{
//过了很多分钟后,作业完成,并发出通知
this._controller.通知(2);
}
}

///
/// 打荷就是专门负责配菜的人。配好油盐酱醋以及各种调料,配好份额比例。
///

public class 打荷
{
private 控制中心 _controller;
public 打荷()
{
}

internal void 设置控件中心(控制中心 controller)
{
this._controller = controller;
}

public void 配姜()
{
Console.WriteLine($"打荷配了1块姜。");
}
public void 配醋()
{
Console.WriteLine($"打荷配了2勺醋。");
}
public void 作业完成()
{
//过了很多分钟后,作业完成,并发出通知
this._controller.通知(3);
}
}

public interface 控制中心
{
void 通知(int type);
}

public class 厨房控制中介者 : 控制中心
{
private 走位 _servicer;
private 水台 _shuitai;
private 打荷 _dahe;
private 厨师 _chushi;

public 厨房控制中介者(走位 servicer, 水台 shuitai, 打荷 dahe, 厨师 chushi)
{
this._servicer = servicer;
this._shuitai = shuitai;
this._dahe = dahe;
this._chushi = chushi;

this._servicer.设置控件中心(this);
this._shuitai.设置控件中心(this);
this._dahe.设置控件中心(this);
this._chushi.设置控件中心(this);
}

public void 通知(int type)
{
//客人下单要一份酸菜鱼
if (type == 1)
{
Console.WriteLine($"水台,开始干活");
this._shuitai.选鱼();
this._shuitai.杀鱼();
}
//水台已经把鱼杀好了
else if (type == 2)
{
Console.WriteLine($"打荷,开始干活");
this._dahe.配姜();
this._dahe.配醋();
}
//打荷工作完毕
else if (type == 3)
{
Console.WriteLine($"厨师,开始干活");
this._chushi.制作();
}
//厨师制作完成
else if (type == 99)
{
Console.WriteLine($"走位,开始干活");
this._servicer.取餐();
}
}
}
}

?



友情链接: