понедельник, 29 сентября 2008 г.

О студентах-кодерах и Singleton'е

Сегодня утором, шарясь по необъятным просторам, мать его, интернета, наткнулсо на один очень занимательный исходник, там на  с++ была прога написана с двумя формами, причем они управляют друг-другом, ну не суть, штука в том что в каждой хранится указатель на другую форму, и передается в процедуры через функцию getAnotherFormPointer().
 И так это меня задело, что пострадал я от графоманского приступа, и решил написать это там где никто не прочтет))

  И так Singleton -стандартный шаблон проектирования, позволяет держать в системе только один экземпляр объекта, а при создании еще одного экземпляра возвращается ссылка на уже существующий. Он позволяет резко сократить колличество модификаторов static в коде и упростить жизнь программисту.

Реализация:
 class Singleton
 {
       static Singleton INSTANCE = null;
       static Singleton Instance()
       {
              if(INSTANCE==null)
                      INSTANCE= New Singleton();
              return INSTANCE;
       }
       public Singleton()
       {
               //код конструктора
        }
        // остальной код
 }

Вызов:
Singleton s = Singleton.Instance();
ну или как в C# 3.0:
var s = Singleton.Instance();

  Далее ответ очевиден, реализовать этот шаблон в обеих формах, и без вяских дополнительных ухищрений  получаем доступ к уже существующему объекту, и возможость управлять им и настраивать его так, как если бы создавали его заново.
Если говорить о производительности, то локально возникающая ссылка не повлияет на производительность в той мере в какой повлияет ворох кода передающего ссылки.

1 комментарий:

ЙА комментирует...

Пока с етимипоролями провозилась забыла ваще, что хотела написать))) Мысль былва такая, что ты очень даже хорошо и логично изясняешь свои мысли.Вот