惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - AlanPaoPao

23)Visitor 22)Template 21)Strategy 20)State 19)Observer 18)Memento 16)Iterator 15)Interpreter 14)Command 13)Chain Of Responsibility 12)Proxy 11)Flyweight 10)Facade 09)Decorator 08)Composite 07)Bridge 06)Adapter 05)Prototype 04)Factory Method
17)Mediator
AlanPaoPao · 2007-09-21 · via 博客园 - AlanPaoPao

    中介者模式的目的是: 把一个特定对象集合的职责集中,进行封装
    实例代码:

abstract class AbstractChatroom
{
  
public abstract void Register(Participant participant);
  
public abstract void Send(string from, string to, string message);
}

class Chatroom : AbstractChatroom
{
  
private Hashtable participants = new Hashtable();
  
public override void Register(Participant participant)
  
{
    
if (participants[participant.Name] == null)
    
{
      participants[participant.Name] 
= participant;
    }

    participant.Chatroom 
= this;
  }

  
public override void Send(string from, string to, string message)
  
{
    Participant pto 
= (Participant)participants[to];
    
if (pto != null)
    
{
      pto.Receive(from, message);
    }

  }

}

class Participant
{
  
private Chatroom chatroom;
  
private string name;
  
public Participant(string name)
  
{
    
this.name = name;
  }

  
public string Name
  
{
    
get return name; }
  }

  
public Chatroom Chatroom
  
{
    
set { chatroom = value; }
    
get return chatroom; }
  }

  
public void Send(string to, string message)
  
{
    chatroom.Send(name, to, message);
  }

  
public virtual void Receive(string from, string message)
  
{
    Console.WriteLine(
"{0} to {1}: '{2}'", from, Name, message);
  }

}

class Beatle : Participant
{
  
public Beatle(string name)
    : 
base(name)
  
{
  }

  
public override void Receive(string from, string message)
  
{
    Console.Write(
"To a Beatle: ");
    
base.Receive(from, message);
  }

}

class NonBeatle : Participant
{
  
public NonBeatle(string name)
    : 
base(name)
  
{
  }

  
public override void Receive(string from, string message)
  
{
    Console.Write(
"To a non-Beatle: ");
    
base.Receive(from, message);
  }

}

class MainApp
{
  
static void Main()
  
{
    Chatroom chatroom 
= new Chatroom();
    Participant George 
= new Beatle("George");
    Participant Paul 
= new Beatle("Paul");
    Participant Ringo 
= new Beatle("Ringo");
    Participant John 
= new Beatle("John");
    Participant Yoko 
= new NonBeatle("Yoko");
    chatroom.Register(George);
    chatroom.Register(Paul);
    chatroom.Register(Ringo);
    chatroom.Register(John);
    chatroom.Register(Yoko);
    Yoko.Send(
"John""Hi John!");
    Paul.Send(
"Ringo""All you need is love");
    Ringo.Send(
"George""My sweet Lord");
    Paul.Send(
"John""Can't buy me love");
    John.Send(
"Yoko""My sweet love");
    Console.Read();
  }

}