سعید صفایی | SAEED SAFAEE

Observer Design Pattern الگوی طراحی

سعید صفایی دیدگاه
Observer Design Pattern  الگوی طراحی

Observer Design Pattern  الگوی طراحی

یک شبکه اجتماعی رو در نظر بگیرید که فردی به  پستی را انتشار میدهد و برنامه باید به دنبال کننده های آن اطلاع دهد

 اجرا میکنیم observerاین روش را با پترن


IObserverابتدا اینترفیسی با نام 

(نام ها برای شناحت بهتر پترن استفاده می شود)


interface IObserver
{

        Task Update(string name, string massge);
}



IPersonسپس اینترفیس کاربر 

interface IPerson
{

        Task Add(IObserver model);

        Task Remove(IObserver model);

        Task Send(string massege);
}



 به عنوان شخص انتشار دهنده پستPublisherاکنون 

class Publisher: IPerson
   {
        public string _name { getset; }
        public List<IObserver> Flowers = new List<IObserver>();

        public Publisher(string name)
        {
            _name = name;
       }

        public async Task SendMasage(string massage)
        {
            Console.WriteLine(_name + " say: " + massage);
            Send(massage);
        }

        public async Task Add(IObserver model)
        {
            Flowers.Add(model);
        }

        public async Task Remove(IObserver model)
        {
            Console.WriteLine("remove");
        }

        public async Task Send(string massege)
        {
            foreach (var item in Flowers)
            {
                item.Update(_name, massege);
            }
        }
}


حال کلاس افرادی که گیرنده پست هستند

class Person : IObserver
 {
        public string _name { getset; }
        public Person(string name)
        {
            _name = name;
        }

       public async Task Update(string name, string massge)
        {
            Console.WriteLine(_name + " Resive massage from " + name + ": " + massge);        
        }
}


حال برنامه اصلی را اینگونه پیاده سازی و اجرا میکنیم


static void Main(string[] args)
 {
            Publisher account = new Publisher("Saeed Safaee");

            Person p = new Person("Ali");
            Person p۲new Person("Behroz");

            account.Add(p);
            account.Add(p۲);

            account.SendMasage("Salam be hame");
}


خروجی به شکل زیر خواهد بود:

Saeed Safaee say: Salam be hame
Ali Resive massage from Saeed Safaee: Salam be hame
Behroz Resive massage from Saeed Safaee: Salam be hame

دیدگاه خود را بگذارید