| using System;␍␊ |
| using System.Collections.Generic;␍␊ |
| using System.Linq;␍␊ |
| using System.Text;␍␊ |
| ␍␊ |
| namespace bridgeexample␍␊ |
| {␍␊ |
| class Program␍␊ |
| {␍␊ |
| public interface IMessageSender␍␊ |
| {␍␊ |
| void SendMessage(string subject, string body);␍␊ |
| }␍␊ |
| ␍␊ |
| public abstract class Message␍␊ |
| {␍␊ |
| public IMessageSender MessageSender { get; set; }␍␊ |
| public string Subject { get; set; }␍␊ |
| public string Body { get; set; }␍␊ |
| public abstract void Send();␍␊ |
| }␍␊ |
| ␍␊ |
| public class SystemMessage : Message␍␊ |
| {␍␊ |
| public override void Send()␍␊ |
| {␍␊ |
| MessageSender.SendMessage(Subject, Body);␍␊ |
| }␍␊ |
| }␍␊ |
| ␍␊ |
| public class UserMessage : Message␍␊ |
| {␍␊ |
| public string UserComments { get; set; }␍␊ |
| public override void Send()␍␊ |
| {␍␊ |
| string fullbody = string.Format("{0}\nUser Comments:{1}", Body, UserComments);␍␊ |
| MessageSender.SendMessage(Subject, fullbody);␍␊ |
| }␍␊ |
| }␍␊ |
| ␍␊ |
| public class EmailSender : IMessageSender␍␊ |
| {␍␊ |
| public void SendMessage(string subject, string body)␍␊ |
| {␍␊ |
| Console.WriteLine("Email\n{0}\n{1}\n", subject, body);␍␊ |
| }␍␊ |
| }␍␊ |
| ␍␊ |
| public class MSMQSender : IMessageSender␍␊ |
| {␍␊ |
| public void SendMessage(string subject, string body)␍␊ |
| {␍␊ |
| Console.WriteLine("MSMQ\n{0}\n{1}\n", subject, body);␍␊ |
| }␍␊ |
| }␍␊ |
| ␍␊ |
| public class WebServiceSender : IMessageSender␍␊ |
| {␍␊ |
| ␍␊ |
| public void SendMessage(string subject, string body)␍␊ |
| {␍␊ |
| Console.WriteLine("Web Service\n{0}\n{1}\n", subject, body);␍␊ |
| }␍␊ |
| }␍␊ |
| ␍␊ |
| static void Main(string[] args)␍␊ |
| {␍␊ |
| IMessageSender email = new EmailSender();␍␊ |
| IMessageSender queue = new MSMQSender();␍␊ |
| IMessageSender web = new WebServiceSender();␍␊ |
| ␍␊ |
| Message message = new SystemMessage();␍␊ |
| message.Subject = "Test Message";␍␊ |
| message.Body = "This is a test message";␍␊ |
| message.MessageSender = email;␍␊ |
| message.Send();␍␊ |
| ␍␊ |
| message.MessageSender = queue;␍␊ |
| message.Send();␍␊ |
| ␍␊ |
| message.MessageSender = web;␍␊ |
| message.Send();␍␊ |
| ␍␊ |
| UserMessage usermsg = new UserMessage();␍␊ |
| usermsg.Subject = "Test user message";␍␊ |
| usermsg.Body = "This is a test user message";␍␊ |
| usermsg.UserComments = "C# is awesome!";␍␊ |
| ␍␊ |
| usermsg.MessageSender = email;␍␊ |
| usermsg.Send();␍␊ |
| }␍␊ |
| }␍␊ |
| }␍␊ |