0
تحلیل و بهینه سازی کد چت روم Chatroom
سلام کسی مس تونه بگه این کد چی کار میکنه؟
ممنون میشم سریع تر جواب بدین
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; public class Client { public static void Main() { ApplicationMediator mediator = new ApplicationMediator(); ConcreteColleague desktop = new ConcreteColleague(mediator); MobileColleague mobile = new MobileColleague(mediator); mediator.addColleague(desktop,"groupA"); mediator.addColleague(mobile, "groupB"); desktop.send("Hello World", "groupA"); mobile.send("Hello", "groupB"); Console.ReadKey(); } } public interface Mediator { void send(String message, Colleague colleague,String groupName); } public abstract class Colleague { private Mediator mediator; public Colleague(Mediator m) { mediator = m; } //send a message via the mediator public void send(String message,string groupName) { mediator.send(message, this, groupName); } //get access to the mediator public Mediator getMediator() { return mediator; } public abstract void receive(String message); } public class ApplicationMediator : Mediator { private List<Colleague> colleagues; private Dictionary<string, List<Colleague>> dictionary; public ApplicationMediator() { // colleagues = new List<Colleague>(); dictionary = new Dictionary<string, List<Colleague>>(); } public void addColleague(Colleague colleague,string groupName) { //colleagues.Add(colleague); if (!dictionary.ContainsKey(groupName)) { dictionary.Add(groupName, new List<Colleague>()); } dictionary[groupName].Add(colleague); } public void send(String message, Colleague originator,String groupName) { //let all other screens know that this screen has changed foreach (var colleague in dictionary[groupName]) { //don't tell ourselves if (colleague != originator) colleague.receive(message); } } } public class ConcreteColleague : Colleague { public ConcreteColleague(Mediator m) : base(m) { } public override void receive(String message) { Console.WriteLine("Colleague Received: " + message); } } public class MobileColleague : Colleague { public MobileColleague(Mediator m) : base(m) { } public override void receive(String message) { Console.WriteLine("Mobile Received: " + message); } }
#چت_روم #الگوی_مدیاتور #سی_شارپ
1 پاسخ
0
سلام به شما دوست عزیز
این کد شما که بر مبنای الگوی mediator نوشته شده یک سیستم چت را شبیه سازی کرده است که یک اینترفیس ساخته که در داخل آن فقط متد send وجود دارد که برای استفاده در کلاس Colleague استفاده می شود. این کلاس یک کلاس abstract است که برای بقیه کلاس ها استفاده می شود. این کلاس Colleague توسط دو کلاس ConcreteColleague و MobileColleague استفاده شده است. در هر کدام از کلاس های فرزند باید متد receive پیاده سازی شود. کلاسApplicationMediator کلاسی است که گروه ها و مخاطب های چت را در خود نگهداری می کند. در انتها در متد main برای اجرای این برنامه استفاده می شود.