Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Xорошо ли передавать в конструктор класса в качестве параметра this (http://www.flasher.ru/forum/showthread.php?t=155579)

Nemez 06.05.2011 18:15

Xорошо ли передавать в конструктор класса в качестве параметра this
 
Возник спор, хорошо ли передавать в конструктор класса в качестве параметра this . Как альтернатива - передача нескольких пакаметров. Или это все равно как, или обусловленно какими-то причинами?

dimarik 06.05.2011 18:37

Вполне нормальная практика. Это же просто ссылка на сам объект, в котором происходит инстанцирование другого объекта. Если конструктор этого "другого" объекта принимает ссылки на объекты, имеющие тип как у this, то почему бы не передать this параметром.

Nemez 06.05.2011 19:31

Что делает коллега, упрощенная схема:
Код AS1/AS2:

viewport = new Viewport(this);
public function setModus() {
        .............               
}

Код AS1/AS2:

public function Viewport(main:GlavniiClass):void {                        
        this.main = main;
        main.setModus();       
}

По-моему, это нехорошо.

CROL 06.05.2011 19:37

непонятно что нехорошего то? this это такая же ссылка на объект как и все другие

ChuwY 06.05.2011 19:54

Цитата:

GlavniiClass
=D
Вот это точно нехорошо.

Котяра 06.05.2011 20:19

Ну и
Код AS3:

main.setModus();

тоже не очень. Сильная связность получается. Хотя я не скажу что так вообще никогда нельзя делать. Могут быть исключения - просто на этот шаг надо идти осознано.
А передавать ли this в конструктор, даже не имеет смысла обсуждать - можно.

Nemez 06.05.2011 20:40

Цитата:

Сообщение от Котяра (Сообщение 994418)
Ну и
Код AS3:

main.setModus();

тоже не очень. Сильная связность получается. Хотя я не скажу что так вообще никогда нельзя делать. Могут быть исключения - просто на этот шаг надо идти осознано.

Из-за этого-то и возник спор.

dimarik 06.05.2011 21:09

Цитата:

Сообщение от Nemez (Сообщение 994408)
Что делает коллега, упрощенная схема:
Код AS1/AS2:

public function Viewport(main:GlavniiClass):void {                        
        this.main = main;
        main.setModus();       
}

По-моему, это нехорошо.

Это очень нехорошо!! Постарайтесь указывать аргументы (параметры передаем, аргументы принимаем!) в конструкторе как интерфейсы или как нативный тип классов флеш-плеера. Иначе образуется зависимость класса Viewport от указанного типа (GlavniiClass) и никакой другой тип, не считая унаследованных от GlavniiClass, Вы туда не передадите. А мы же стремимся сделать класс многоразовым (code reuse)? Если да, то прислушайтесь.

Добавлено через 1 минуту
Ну, если осознанно, то не вопрос.

mikhailk 06.05.2011 21:12

Цитата:

Что делает коллега, упрощенная схема
Передача ссылки на объект как параметр - совершенно нормально.
Не суть, конструктор или какой другой метод.

А вот вызов методов друг друга таким образом как в примере - это, конечно, жуть. Честно говоря, я не могу себе представить ситуации, когда один объект создает другой и разрешает ему себя напрямую дергать...

goodguy 06.05.2011 21:21

Цитата:

Честно говоря, я не могу себе представить ситуации, когда один объект создает другой и разрешает ему себя напрямую дергать...
Я часто так делаю. Не вижу ничего дурного.
Допустим есть какой-то большой интерфейс, структуру которого я четко представляю и который не требует особой гибкости. Нужно раскидать все по разным классам для упрощения кода. Вот в такой ситуации я чаще спользую подобные конструкции, чем события.


Часовой пояс GMT +4, время: 04:29.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.