Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.03.2011, 22:57
Vladimir.b вне форума Посмотреть профиль Отправить личное сообщение для Vladimir.b Найти все сообщения от Vladimir.b
  № 1  
Ответить с цитированием
Vladimir.b

Регистрация: Mar 2011
Сообщений: 2
Question Множество однотипных setter-ов и getter-ов

Здравствуйте!

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

Код AS3:
public class Class1
{
    private var prop1: int;
    private var prop2: String;
    ...
 
    private var callback1: function;
    private var callback2: function;
    ...
 
    public function getProp1(): int
    {
        return prop1;
    }
    ...
 
    public function setProp1(val: int): void
    {
        prop1 = val;
        if (callback1 != null) callback1();
    }
    ...
 
    public function setCallback1(func: function): void
    {
        callback1 = func;
    }
    ...
}
Планируется около 10 -15 свойств в классе и очень не хочется для каждого писать 3 отдельных метода. Возможно ли сделать так, чтобы внешне было не понять, что используется один сеттер и геттер для всех свойств (т.е. вызов происходил как сейчас obj.getProp1())?

Заранее спасибо за отклик!

Старый 14.03.2011, 23:19
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
У Вас какая-то каша в голове. Не очень понял об "3 отдельных метода" для каждого свойства класса.

Кстати, так много крутее )
Код AS1/AS2:
if (callback is Function) callback();
__________________
Воспитан в TimeZero. Работаю в Mail.ru.


Последний раз редактировалось dimarik; 14.03.2011 в 23:22.
Старый 14.03.2011, 23:31
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 3  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
ООП не пропагандирует дублирование кода. Скорее всего вам лучше использовать массивы для хранения свойств и колбэков, тогда количество методов и полей класса сокранится до минимума

Старый 14.03.2011, 23:33
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 4  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
или хеши (Object/Dictionary)
А можно кусок реального кода, а то из-далека можно много чего насоветовать?
Всмысле чтобы было понятно что делает этот класс и из-за чего у него такое количество геттеров/сеттеров

Старый 14.03.2011, 23:34
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 5  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
или хеши (Object/Dictionary)
да, определенно в одну из этих сторон нужно смотреть

Старый 15.03.2011, 00:12
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 6  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
i.o. и expl, прекращайте советовать в таком ключе. Автору просто нужно пересмотреть архитектуру.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Старый 15.03.2011, 00:18
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 7  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
i.o. и expl, прекращайте советовать в таком ключе
почему? Это явно лучше, чем заводить поле и три метода для него

Старый 15.03.2011, 00:18
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 8  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от dimarik Посмотреть сообщение
Кстати, так много крутее )
Код AS1/AS2:
if (callback is Function) callback();
вай???

почему не
Код AS3:
if (callback) callback();
?
__________________
скриптограф

Старый 15.03.2011, 00:22
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
потому что ворнинг

Старый 15.03.2011, 00:26
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 10  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от i.o. Посмотреть сообщение
потому что ворнинг
Действительно...

Код AS3:
if (Boolean(callback)) callback();
Все равно так лучше на мой взгляд))))))
__________________
скриптограф


Последний раз редактировалось orcpochta; 15.03.2011 в 00:29.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:29.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
setter getter

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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