Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2013, 11:37   #1
Komediant
Новичок
Джуниор
 
Регистрация: 23.05.2013
Сообщений: 1
По умолчанию Интерфейс к шаблону

Ребята!помогите прикрутить интерфейс к консольному приложению: паттерн Наблюдатель!!не особо важно какой именно будет интерфейс,главное чтобы он отражал суть этого шаблона!помогите пожалуйста!!!
Код:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading;
 
namespace Observer
{
    /// <summary>
    /// Observer Pattern Judith Bishop Jan 2007
    /// Updated by Kobel' Bohdan 2013
    /// 
    /// The Subject runs in a thread and changes its state
    /// independently. At each change, it notifies its Observers.
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            Subject subject = new Subject();
            Observer Observer = new Observer(subject,"Center","\t\t");
            Observer observer2 = new Observer(subject,"Right","\t\t\t\t");
            subject.Go();
 
            // Wait for user
            Console.Read();
        }
 
    }
 
    class Simulator : IEnumerable 
    {
        string [] moves = {"5","3","1","6","7"};
 
        public IEnumerator GetEnumerator() 
        {
            foreach (string element in moves)
                yield return element;
        }
    }
 
    interface ISubject
    {
        void AddObserver(IObserver observer);
        void RemoveObserver(IObserver observer);
        void NotifyObservers(string s);
    }
 
    class Subject : ISubject
    {
        public string SubjectState { get; set; }
        public List<IObserver> Observers { get; private set; }
 
        private Simulator simulator;
 
        private const int speed = 200;
 
        public Subject()
        {
            Observers = new List<IObserver>();
            simulator = new Simulator();
        }
 
        public void AddObserver(IObserver observer)
        {
            Observers.Add(observer);
        }
 
        public void RemoveObserver(IObserver observer)
        {
            Observers.Remove(observer);
        }
 
        public void NotifyObservers(string s)
        {
            foreach (var observer in Observers)
            {
                observer.Update(s);
            }
        }
 
        public void Go() 
        {
            new Thread(new ThreadStart(Run)).Start( );
        }
 
        void Run () 
        {
            foreach (string s in simulator) 
            {
                Console.WriteLine("Subject: " + s);
                SubjectState = s;
                NotifyObservers(s);
                Thread.Sleep(speed); // milliseconds
            }
        }
    }
 
    interface IObserver 
    {
        void Update(string state);
    }
 
    class Observer : IObserver
    {
        string name;
 
        ISubject subject;
 
        string state;
 
        string gap;
 
        public Observer(ISubject subject, string name, string gap)
        {
            this.subject = subject;
            this.name = name;
            this.gap = gap;
            subject.AddObserver(this);
        }
 
        public void Update(string subjectState)
        {
            state = subjectState;
            Console.WriteLine(gap + name + ": " + state);
        }
    }
}
Komediant вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка по шаблону Taurus_UA Microsoft Office Access 39 13.09.2012 11:56
Вопрос по шаблону Seratanin JavaScript, Ajax 0 02.06.2012 15:50
разработать интерфейс для дисков - интерфейс програмный Notformal Помощь студентам 0 01.11.2011 22:52
Печать по шаблону Klayman Фриланс 6 22.08.2008 10:10
Итератор к шаблону Crucian Общие вопросы C/C++ 5 29.10.2007 16:52