Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Простенький класс - фабрика (число прочтений - 2696 )
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Простенький класс - фабрика
12. Августа 2013 :: 15:08
Печать  
В основном, как пример.
В глобальнике создаём объект, к примеру
Фаб = СоздатьОбъект(ТФабрика);
и везде где ни попадя пишем
сзМеню = Фаб.СписокЗначений("Налево", "Направо", "Вверх", "Вниз");
сзМеню.ВыбратьЗначение(...);

хедер:
Код
Выбрать все
класс ТФабрика = класс_ТФабрика@MD
{
	СписокЗначений сзПарам(...); //пары: Имя, Значение
	СписокЗначений СписокЗначений(...); //значения (без представлений)
}; 



реализация:
Код
Выбрать все
Функция сзПарам() Экспорт //:СписокЗначений//D:сзПарам("Представление1", Значение1, "Представление2", Значение2, ...)
	сзПараметры = Сам(Контекст).ПолучитьСписокПараметров("сзПарам");

	сз = СоздатьОбъект("СписокЗначений");
	н = 1;
	Пока н < сзПараметры.РазмерСписка() Цикл
		Имя = сзПараметры.ПолучитьЗначение(н);
		н = н + 1;
		Значение = сзПараметры.ПолучитьЗначение(н);
		н = н + 1;

		сз.ДобавитьЗначение(Значение, Имя);
	КонецЦикла;
	Возврат сз;
КонецФункции

Функция СписокЗначений() Экспорт //:СписокЗначений  //D:СписокЗначений(Значение1, Значение2, ... , ЗначениеН)
	сзПараметры = Сам(Контекст).ПолучитьСписокПараметров("СписокЗначений");

	сз = СоздатьОбъект("СписокЗначений");
	сзПараметры.Выгрузить(сз);

	Возврат сз;
КонецФункции

Функция Модуль(Конт, ТекстМодуля) Экспорт //:ВыполняемыйМодуль//D:Модуль(Конт, ТекстМодуля): Создаёт выполняемый модуль, и инициализирует его
	Модуль = СоздатьОбъект("ВыполняемыйМодуль");
	Модуль.УстановитьМодуль(ТекстМодуля);
	Модуль.НазначитьКонтекст(Конт);
	Модуль.КомпилироватьМодуль();
	Модуль.ВыполнитьМодуль();
	Возврат Модуль;
КонецФункции 



до кучи, такая ещё штука:
хедер
Код
Выбрать все
класс ОбщиеМетоды = классОбщиеМетоды@MD
{
	Число ОдноИз(Значение, ...);
}; 


реализация
Код
Выбрать все
Функция ОдноИз(Значение) Экспорт //D:ОдноИз(Значение, Вариант1, Вариант2, ...)  Возвращает 1, если Значение совпадает с одним из вариантов
	Сам = Сам(Контекст);
	сзПарам = Сам(Контекст).ПолучитьСписокПараметров("ОдноИз");
	Если сзПарам.НайтиЗначение(Значение) > 0 Тогда
		Возврат 1;
	КонецЕсли;
	Возврат 0;
КонецФункции 



Задолбало писать
Если (ЧтоТо = 1) ИЛИ (ЧтоТо = 2) ... ИЛИ (ЧтоТо = 77) Тогда
теперь пишу
Если оМетоды.ОдноИз(ЧтоТо, 1, 2, ... 77) = 1 Тогда
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Простенький класс - фабрика
Ответ #1 - 13. Августа 2013 :: 08:23
Печать  
Хитро со списком параметров..
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Простенький класс - фабрика
Ответ #2 - 13. Августа 2013 :: 16:40
Печать  
Ну, "хитро" - эт не ко мне. Все сишники помнят и любят printf(...)  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать