Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Паттерн Mutator

80K
27 апреля 2012 года
bo99ard
3 / / 23.04.2012
Вот два варианта Mutatora как альтернатива switch.



Код:
class CMutator
    {
        public CMutator()
        {
            Console.WriteLine("call Constructor");
            m_Method = new TMethod[]{
                Method1
                , Method2
            };
        }
        private void Method1(){
            Console.WriteLine("call Method1");
        }
        private void Method2(){
            Console.WriteLine("call Method2");
        }
        private delegate void TMethod();
        private static TMethod[] m_Method;
        private static int m_CurrentMethod=0;
        public void SomeMethod(){
            if (m_CurrentMethod == m_Method.Length) m_CurrentMethod = 0;
            m_Method[m_CurrentMethod++]();
        }
    }


class CSwitchMutator
    {
        public CSwitchMutator()
        {
            Console.WriteLine("call Constructor");
            m_Method = new TMethod(Method1);
        }
        private void Method1(){
            Console.WriteLine("call Method1");
            m_Method = new TMethod(Method2);
        }
        private void Method2(){
            Console.WriteLine("call Method2");
            m_Method = new TMethod(Method1);
        }
        private delegate void TMethod();
        private TMethod m_Method;
        public void SomeMethod(){
            m_Method();
        }
    }
Кому какой больше нравиться и нужный ли они вообще, если есть switch?
341
28 апреля 2012 года
Der Meister
874 / / 21.12.2007
Какое-то у вас особенное видение паттерна в том смысле, что ваш код не имеет к нему никакого отношения.
Задача Mutator - модифицировать существующие объекты вместо порождения новых, она довольно специфична.
80K
28 апреля 2012 года
bo99ard
3 / / 23.04.2012
Спасибо, не знал что название уже занято, вопрос остается в силе.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог