За последние 24 часа нас посетил 18531 программист и 1705 роботов. Сейчас ищут 919 программистов ...

"неизвестность" синглтонов

Тема в разделе "Вопросы от блондинок", создана пользователем ShamahN, 28 май 2010.

  1. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    Может быть вопрос глупый, так что сразу в блондинок =)
    В общем такая тема. В скрипте используется синглтон. Хочется чтобы классы проекта как можно меньше "знали" о других классах. По-этому использую следующую примочку:
    PHP:
    1. <?php
    2. class cl1 {
    3. ....
    4. public static function singleton() {
    5. ....
    6. }
    7. public function tratata() {
    8. .....
    9. }
    10. }
    11.  
    12. class cl2 {
    13. public function some(cl1 $data){
    14. ....
    15. echo($data->tratata());
    16. ....
    17. }
    18. }
    19.  
    20. //используем
    21. cl2->some(ck1::singleton());
    22.  
    Чувствую что-то делаю плохо. Если не сложно подскажите, какие подводные камни у такого подхода?
     
  2. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    а смысл?

    а-та-та


    одиночка как раз и позволяет благодаря статическим вызовам избежать создания повторяющихся объектов .
    Но, спешу тебя обрадовать — у тебя не одиночка )
     
  3. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    а так :
    PHP:
    1. <?php
    2. class Coverages {
    3.     static private $instance = NULL;   
    4.    
    5.     static function singleton() {
    6.         if (self::$instance == NULL) {
    7.             self::$instance = new Coverages();
    8.         }
    9.         return self::$instance;
    10.     }
    11.    
    12.     private function __construct(){}
    13.    
    14.     private function __clone(){}
    15. }
    =)
    Если нужен чисто "одиночка", - делай полностью статический класс и дергай его везде. А прикол у синглтона как раз такой что я могу на него ссылку передать.. или я опять ошибаюсь?
    зы: "а-та-та" да =) туплю, но раздел подходящий ;) подправил
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    хорошо, а теперь
    PHP:
    1. <?php
    2. class cl2 {
    3.     public function some()
    4.     {
    5.         Coverages::singleton()->tratata();
    6.     }
    7. }
    8. ?>
    зачем передавать объект, который и так доступен?
     
  5. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    ... и который и так в единственном экземпляре... даже не знаю, тогда.. Просто позволяет немного абстрагироваться, наверное.
    Главное скажите, ничего "пресТУПнОГО" данном применении не наблюдается? если нет, - то меня как бы устраивает. =)
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кроме попытки передать по ссылке «суперглобальный» объект? )
     
  7. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    не так страшно, как если бы копию =)
    А в общем спасибо за конструктивную беседу.. обдумаю на досуге... ;)
     
  8. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Эта называется dependency injection -> гугль =)
    А "хорошо или плохо" у коней в сферическом вакууме нету.
     
  9. ShamahN

    ShamahN Активный пользователь

    С нами с:
    10 апр 2007
    Сообщения:
    1.449
    Симпатии:
    0
    Адрес:
    г.Волгодонск Роствской обл.
    что-то в этом есть, но не так широко =)

    /me чешет репу...
     
  10. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Сферических коней в вакууме =))
    Что такое сферический вакуум, интересно)
     
  11. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Apple
    Тебя странный/прелестный/очарованный кварки не смущают?

    Вакуум, кстати, еще тот супчик, если по нему долго и упорно бить, то можно из него выбить материю :D
     
  12. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Вакуума не существует. Это сказка для девчонок.
     
  13. Зато есть вакуумная бомба!
     
  14. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Аналогично сферическому коню, но реализует dependency injection
     
  15. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Знаком с этой фичей. Но правильно называть это - объёмно детонирующий боеприпас. Зверская вещь. Первый взрыв распыляет "напалм", он смешивается с воздухом "окислителем" и происходит объёмный взрыв. Красота.
     
  16. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Че? Какой окислитель, какой взрыв? О_о
    Не переходите на химию =)
    Бугага, окислитель и взрыв ... молодец)))
     
  17. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
  18. Там не напалм, а наоборот - быстрогорящие смеси. Основная идея - выжечь весь кислород. Кто не сгорел - задохнется, кто не задонулся - прибьет давлением )
    Хотя все сгорают.

    А про вакуумную бомбу - это сарказм был, да.

    Между прочим, я через 2 часа уезжаю на авиационную базу Военно-воздушных сил РК в г. Астане. Буду на KADEX-2010 трогать МиГ-31 за писю )
     
  19. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Hight
    Диссоциация?
     
  20. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    По-этому я в кавычках и написал ;)
    Дык, это понятно. Я просто беседу поддержать хотел.
    Миг-31 - вещь! Я на МАКС`ах всегда им любовался. =) Но красивее всех всё-таки семейство СУ-27.
     
  21. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Что ты хотел этим сказать? =)
     
  22. Постараюсь его тоже потрогать. Он тоже есть.
    Еще и танчики есть, но не знаю - какие.
     
  23. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Нет-нет, я как раз хотел спросить =)
    Уточняю, так сказать.
     
  24. Simpliest

    Simpliest Активный пользователь

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Фетишист? :D
     
  25. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Да наверняка Т-72 (Урал).
    А я не химик. Я не знаю как это называется. Я просто оружие люблю. ;)