C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問(wèn)題示例
本文實(shí)例講述了C#設(shè)計(jì)模式之Mediator中介者模式解決程序員的七夕緣分問(wèn)題。分享給大家供大家參考,具體如下:
一、理論定義
中介者模式 定義了一種一對(duì)多的操作,解脫了對(duì)象之間多對(duì)多的引用依賴(lài),所有對(duì)象之間的通信,都封裝在 中介者里面。
二、應(yīng)用舉例
需求描述: 七夕來(lái)啦,誰(shuí)說(shuō)程序員就一定 是單身苦逼呢,程序員也有自己的幸福。
也在追尋自己的緣分,我們都是有理想,有文化,有獨(dú)立見(jiàn)解的群體,
我們?yōu)?信息社會(huì)所做的努力,能給我們七夕帶來(lái)好運(yùn)。告別單身,開(kāi)始行動(dòng)啦!
1.三個(gè)程序員 找到了 緣分"YuanFen"大師,希望找到自己另一半,
2.六個(gè)美女: 劉詩(shī)詩(shī),蔣琴琴,白富美,朱莉,舒淇,語(yǔ)嫣 也找到 緣分"YuanFen" 大師,
希望心中的 白馬王子能給自己一注目光。
3.緣分大師 接受了程序員 和 美女的請(qǐng)求。
4.開(kāi)始緣分派對(duì)啦!
三、具體編碼
1.美女們(Grils)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Mediator
{
public class Girls
{
/// <summary>
/// 美女名字
/// </summary>
public string Name { get; set; }
/// <summary>
/// 找了一個(gè)叫“緣分” 的中介者 做媒婆
/// </summary>
public YuanFen YuanFen { get; set; }
/// <summary>
/// 向自己心目中的 白馬王子發(fā)信
/// </summary>
/// <param name="name_message">名字和信息</param>
public void SendMessage(Dictionary<string,string> name_message) {
YuanFen.SendToBoys(name_message);
}
/// <summary>
/// 收到某個(gè)白馬王子回信
/// </summary>
public void RecieveMessage(string msg)
{
Console.WriteLine(msg);
}
}
}
2. 帥哥程序員
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Mediator
{
/// <summary>
/// 帥哥 1
/// </summary>
public class Boys
{
/// <summary>
/// 帥哥名字
/// </summary>
public string Name { get; set; }
/// <summary>
/// 找了一個(gè)叫“緣分” 的中介者 做媒婆
/// </summary>
public YuanFen YuanFen { get; set; }
/// <summary>
///向自己心目中的 白雪公主發(fā)信
/// </summary>
/// <param name="name_message">名字和信息</param>
public void SendMessage(Dictionary<string, string> name_message)
{
YuanFen.SendToGrils(name_message);
}
/// <summary>
/// 收到某個(gè)白雪公主回信
/// </summary>
public void RecieveMessage(string msg)
{
Console.WriteLine(msg);
}
}
}
3.緣分
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Com.Design.Gof.Mediator
{
public class YuanFen
{
public List<Girls> Girls { get; set; }
public List<Boys> Boys { get; set; }
/// <summary>
/// 男孩向女孩發(fā)信
/// </summary>
/// <param name="name_message"></param>
public void SendToGrils(Dictionary<string, string> name_message)
{
foreach (var k in name_message) {
foreach (var girl in Girls) {
if (k.Key == girl.Name) {
girl.RecieveMessage(k.Value);
}
}
}
}
/// <summary>
/// 女孩向男孩發(fā)信
/// </summary>
/// <param name="name_message"></param>
public void SendToBoys(Dictionary<string, string> name_message)
{
foreach (var k in name_message)
{
foreach (var boy in Boys)
{
if (k.Key == boy.Name)
{
boy.RecieveMessage(k.Value);
}
}
}
}
}
}
4.主函數(shù)(派對(duì),發(fā)情書(shū))
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Com.Design.Gof.Mediator;
namespace Com.Design.Gof.Test
{
class Program
{
static void Main(string[] args)
{
//緣分 這個(gè) 媒婆來(lái)了
YuanFen yuanFen = new YuanFen { Boys=new List<Boys>(), Girls=new List<Girls>()};
//男孩子們?nèi)杠S報(bào)名啊
Boys boy1 = new Boys { Name="程序員1", YuanFen=yuanFen};
Boys boy2 = new Boys { Name = "程序員2", YuanFen = yuanFen };
Boys boy3 = new Boys { Name = "程序員3", YuanFen = yuanFen };
//緣分接受了男孩子的夙愿
yuanFen.Boys.Add(boy1); yuanFen.Boys.Add(boy2); yuanFen.Boys.Add(boy3);
//女孩子也很積極
Girls girls1 = new Girls { Name="劉詩(shī)詩(shī)", YuanFen=yuanFen};
Girls girls2 = new Girls { Name = "白富美", YuanFen = yuanFen };
Girls girls3 = new Girls { Name = "蔣琴琴", YuanFen = yuanFen };
Girls girls4 = new Girls { Name = "舒淇", YuanFen = yuanFen };
Girls girls5 = new Girls { Name = "朱莉", YuanFen = yuanFen };
Girls girls6 = new Girls { Name = "語(yǔ)嫣", YuanFen = yuanFen };
//緣分接受了美女們的愛(ài)情 丘比特
yuanFen.Girls.Add(girls1); yuanFen.Girls.Add(girls2); yuanFen.Girls.Add(girls3);
yuanFen.Girls.Add(girls4); yuanFen.Girls.Add(girls5); yuanFen.Girls.Add(girls6);
//開(kāi)始派對(duì)啦
//程序員1 對(duì) 劉詩(shī)詩(shī),蔣琴琴 感興趣
Dictionary<string, string> name_message = new Dictionary<string, string>();
name_message.Add("劉詩(shī)詩(shī)", boy1.Name + " 對(duì)劉詩(shī)詩(shī)說(shuō): 詩(shī)詩(shī)詩(shī)詩(shī) 我愛(ài)你,就像老鼠愛(ài)大米");
name_message.Add("蔣琴琴", boy1.Name + " 對(duì)蔣琴琴說(shuō): 我希望每天睡前最后看到的人是你...... ");
boy1.SendMessage(name_message);
name_message.Clear();
Console.WriteLine();
//程序員2 對(duì) 劉詩(shī)詩(shī),朱莉,舒淇 感興趣
name_message.Add("語(yǔ)嫣", boy2.Name + " 對(duì)語(yǔ)嫣說(shuō): 地球仍然轉(zhuǎn)動(dòng),世界依舊善變,而我永遠(yuǎn)愛(ài)你");
name_message.Add("朱莉", boy2.Name + " 對(duì)朱莉說(shuō): 每天都 ...很想妳... ");
name_message.Add("舒淇", boy2.Name + " 對(duì)舒淇說(shuō): 曾經(jīng)迷惘的心中,是你牽引我走出寂寞 ");
boy2.SendMessage(name_message);
name_message.Clear();
Console.WriteLine();
//語(yǔ)嫣 對(duì)三個(gè)程序員都感興趣
name_message.Add("程序員1", girls6.Name + " 對(duì)程序員1說(shuō): 想想和我一起看日升日落的喜悅吧!...嘻嘻");
name_message.Add("程序員2", girls6.Name + " 對(duì)程序員2說(shuō): 我的世界只有你懂.... ");
name_message.Add("程序員3", girls6.Name + " 對(duì)程序員3說(shuō): 因?yàn)橹啦荒軟](méi)有你,所以會(huì)更珍惜 ");
girls6.SendMessage(name_message);
name_message.Clear();
Console.WriteLine();
//蔣琴琴 很鐘情,很專(zhuān)一,只給程序員1 發(fā)信
name_message.Add("程序員1", girls3.Name + " 對(duì)程序員1說(shuō): 愛(ài)你一生伴你一世,你的心跳只有我聽(tīng)得到");
girls3.SendMessage(name_message);
Console.ReadKey();
}
}
}
5.運(yùn)行結(jié)果

6.總結(jié)
七夕來(lái)了,找回自己的緣分。
附:完整實(shí)例代碼點(diǎn)擊此處本站下載。
更多關(guān)于C#相關(guān)內(nèi)容還可查看本站專(zhuān)題:《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#窗體操作技巧匯總》、《C#常見(jiàn)控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)組操作技巧總結(jié)》及《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》
希望本文所述對(duì)大家C#程序設(shè)計(jì)有所幫助。
- 詳解C#設(shè)計(jì)模式編程中生成器模式的使用
- C#設(shè)計(jì)模式之Template模板方法模式實(shí)現(xiàn)ASP.NET自定義控件 密碼強(qiáng)度檢測(cè)功能
- C#設(shè)計(jì)模式之Visitor訪(fǎng)問(wèn)者模式解決長(zhǎng)隆歡樂(lè)世界問(wèn)題實(shí)例
- C#設(shè)計(jì)模式之Strategy策略模式解決007大破密碼危機(jī)問(wèn)題示例
- C#設(shè)計(jì)模式之ChainOfResponsibility職責(zé)鏈模式解決真假美猴王問(wèn)題實(shí)例
- C#設(shè)計(jì)模式之Observer觀察者模式解決牛頓童鞋成績(jī)問(wèn)題示例
- C#設(shè)計(jì)模式之單例模式實(shí)例講解
- c#設(shè)計(jì)模式 適配器模式詳細(xì)介紹
- C#設(shè)計(jì)模式之觀察者模式實(shí)例講解
- 實(shí)例解析C#設(shè)計(jì)模式編程中簡(jiǎn)單工廠模式的使用
- C#設(shè)計(jì)模式之外觀模式介紹
- C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問(wèn)題實(shí)例
相關(guān)文章
關(guān)于C#連接SQL Server時(shí)提示用戶(hù)登錄失敗的解決方法
在用C#開(kāi)發(fā)windows端程序并連接SQL Server時(shí)有可能會(huì)遇到數(shù)據(jù)庫(kù)登錄失敗的問(wèn)題,下面小編給大家?guī)?lái)了C#連接SQL Server時(shí)提示用戶(hù)登錄失敗的解決方法,感興趣的朋友一起看看吧2021-11-11
C# 啟動(dòng) SQL Server 服務(wù)的實(shí)例
下面小編就為大家分享一篇C# 啟動(dòng) SQL Server 服務(wù)的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
C#利用插值字符串處理器寫(xiě)一個(gè)sscanf
這篇文章主要為大家詳細(xì)介紹了C#如何利用插值字符串處理器寫(xiě)一個(gè)sscanf,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-02-02
C#一個(gè)簡(jiǎn)單的定時(shí)小程序?qū)崿F(xiàn)代碼
這篇文章主要介紹了C#實(shí)現(xiàn)一個(gè)簡(jiǎn)單的定時(shí)小程序代碼,實(shí)現(xiàn)過(guò)程很簡(jiǎn)單,需要的朋友可以參考下2015-09-09
C#利用StreamReader和StreamWriter類(lèi)處理文本的字符編碼使用示例
.NET Framework 中,StreamReader 和 StreamWriter 類(lèi)提供了一些方法來(lái)處理字符編碼,這篇文章主要介紹了C#利用StreamReader和StreamWriter類(lèi)處理文本的字符編碼使用示例,需要的朋友可以參考下2024-06-06
C#實(shí)現(xiàn)實(shí)體類(lèi)和XML的相互轉(zhuǎn)換
本文詳細(xì)講解了C#實(shí)現(xiàn)實(shí)體類(lèi)和XML的相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

