Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Использование паттернов проектирования

Использование паттернов проектирования
Я
   AlexSmolensky
 
26.07.12 - 23:45
2. Бывало50% (1)
4. А что это?50% (1)
1. Использую0% (0)
3. Нет0% (0)
Всего мнений: 2

Кто-нить использует паттерны в проектировании своих систем на 1С?
   Asmody
 
1 - 26.07.12 - 23:46
это какие?
   zak555
 
2 - 26.07.12 - 23:46
   Steel_Wheel
 
3 - 26.07.12 - 23:47
(0) А какие ты видишь паттерны, которые можно использовать в 1С?

Я только "Одиночка" и "Строитель"...
   Asmody
 
4 - 26.07.12 - 23:47
нарисуйте синглетон на 1С, пожалуста…
   Steel_Wheel
 
5 - 26.07.12 - 23:48
(4) Запуск 1-го экземпляра определенной обработки очень часто встречается. Реализуется через константу или файлы
   Steel_Wheel
 
6 - 26.07.12 - 23:49
А на "Строителе" отчеты не через СКД сделаны (т.е. ты его используешь, но сделан он самой 1С)
   Asmody
 
7 - 26.07.12 - 23:51
(5) да ой! типа я не могу использовать обработку _кроме как_ через константу?
   vde69
 
8 - 26.07.12 - 23:51
(4) любой глобальный модуль можно расматривать как отдельный синглетон, правда без наследования.

хотя сейчас они стали делать 4 глобальника, один из которых преднозначен для расширения пользователем
   Asmody
 
9 - 26.07.12 - 23:51
(6) то, что 1С'ю реализовано, мы в расчёт не берём
   Asmody
 
10 - 26.07.12 - 23:53
(8) с фигали глобальник синглтон?
   Asmody
 
11 - 26.07.12 - 23:53
(9)+ в платформе
   Steel_Wheel
 
12 - 26.07.12 - 23:57
(9) ок, тогда строителя нет
(7) а как? Если обработка будет "смотреть" на константу, и перед открытием, если константа не в нужном состоянии, не открываться?
   H A D G E H O G s
 
13 - 26.07.12 - 23:58
Кто все эти люди?
   Steel_Wheel
 
14 - 26.07.12 - 23:59
+12 подразумеваем, что, когда обработка открывается и закрывается, она сама меняет константу. Если константа в "плохом" состоянии, обработка не открывается, появляется сообщение об ошибке
   H A D G E H O G s
 
15 - 27.07.12 - 00:03
Паттерны, ООП (в 1С), UML и прочая, прочая, прочая напоминают мне математику.
Прикладники пытаются сделать науку из инструмента. Накуа? За красивые фразы платить больше не будут. Идите кодить, заводы стоят.
   H A D G E H O G s
 
16 - 27.07.12 - 00:08
Автору пройти тест из
Матрица компетентности программиста
Вы созданы друг для друга.
Уверен, ты наберешь там неплохо баллов и поднимешь свое ЧСВ получше, чем (0) пост.
   NS
 
17 - 27.07.12 - 00:18
(4) У меня куча загрузок с других баз, и для исключения конфликтов (дублей и наоборот пропавших документов) может быть запущен только один экземпляр обработки одновременно. Естественно сделано не через константу, и не через файлы - что чревато глюками, а через блокировку служебного элемента служебного справочника.
   Asmody
 
18 - 27.07.12 - 00:19
(17) это не синглтон
   NS
 
19 - 27.07.12 - 00:22
(18) интересно, а чем-же является этот служебный элемент этого служебного справочника?
   Asmody
 
20 - 27.07.12 - 00:25
(19) элементом справочника он является
   NS
 
21 - 27.07.12 - 00:26
(20) И чем же конкретно он не синглтон?
   Asmody
 
22 - 27.07.12 - 00:28
написать синглтон на 1С можно, например, с помощью параметров сеанса, но это будет синглтон внутри сеанса, а не системы в целом
   serffer
 
23 - 27.07.12 - 00:28
(21) а если через фоновое-регламентное задание с уникальностью по ключу.

2. Бывало
   Asmody
 
24 - 27.07.12 - 00:29
(21) потому что это не синглтон
   NS
 
25 - 27.07.12 - 00:29
(24) Синглотон это объект обладающий некоторыми свойствами.
Какими свойствами необходимыми синглтону он не обладает?
   Asmody
 
26 - 27.07.12 - 00:31
классический синглтон — это объект, создание которого возможно только в единственном экземпляре. любое повторное создание того же объекта должно возвращать тот же объект
   Asmody
 
27 - 27.07.12 - 00:32
(25) иди читай GoF, там всё написано
   NS
 
28 - 27.07.12 - 00:32
(26)  Так и есть. Он создается (если не существует) при попытке прочитать выгрузку с удаленной базы.
Если он уже есть - то он не создается, а используется текущий объект.
   NS
 
29 - 27.07.12 - 00:33
(27) А сам прочитать не можешь?
   Asmody
 
30 - 27.07.12 - 00:33
фасады, фабрики на 1С делаются легко (ну почти), куча паттернов пеализует сама платформа
 
 
   Asmody
 
31 - 27.07.12 - 00:35
(28) только "синглетонность" — это свойство самого объекта, а не его окружения
   NS
 
32 - 27.07.12 - 00:39
(31) у объекта есть методы. И если при инициализации (использования метода инициализация) объекта в случае его существования мы не плодим новый, а взвращаем существующий, а в случае отсутствия создаем - это уже синлтон.
   Asmody
 
33 - 27.07.12 - 00:40
(32) и? или в 1С внезапно появились конструкторы?
   AlexSmolensky
 
34 - 27.07.12 - 00:41
(15) Программирование уже давно стало наукой, пока еще молодой и бурно развивающейся.
По своей сути, любая наука - это структурированные знания, которые используют в решении практических задач.

ООП родилось не как предмет для изучения студентами, а как необходимость. Хоть язык 1С и не является ООП, но зная принципы (не определения, а именно откуда ноги растут) можно создавать конфигурации, которые будет легче поддерживать и развивать.
   NS
 
35 - 27.07.12 - 00:43
(33) Неважны средства которыми ты создал объект который ведет себя как синглтон.
Вот по сути определение сингтона -
Singleton* Singleton::Instance() {
  if(_instance == 0){
     _instance = new Singleton;
  }
  return _instance;
}
   Asmody
 
36 - 27.07.12 - 00:46
(35) только ты забыл, что _instance у тебя — static.
   H A D G E H O G s
 
37 - 27.07.12 - 00:46
(34) "молодой и бурно развивающейся"

Ага, ага. Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё.
   Steel_Wheel
 
38 - 27.07.12 - 00:47
А если Синглтон себя не возвращает -- это не синглтон?
   Asmody
 
39 - 27.07.12 - 00:47
как сделать так, чтобы обработка всегда открывала один и тот же экземпляр в рамках всей системы (а не сеанса)?
   Steel_Wheel
 
40 - 27.07.12 - 00:47
Кмк, это не основная его черта. Основная -- единственность
   H A D G E H O G s
 
41 - 27.07.12 - 00:47
(34) Принципы ООП никак не помогут
"создавать конфигурации, которые будет легче поддерживать и развивать".
   NS
 
42 - 27.07.12 - 00:48
(36) Нет. У меня сотня пользователей в базе. И соотвественно у каждого свой _instance
   Steel_Wheel
 
43 - 27.07.12 - 00:48
(39) Да, нетрудно, на самом деле. НО зачем?
   Asmody
 
44 - 27.07.12 - 00:48
(38) синглтон вообще может ничего не возвращать. главное — что он один.
   H A D G E H O G s
 
45 - 27.07.12 - 00:49
(39) Я могу это сделать. Но это будет пляска в ВК, OLE и медленно и печально.
   Asmody
 
46 - 27.07.12 - 00:49
(42) тогда это не синглтон
   Asmody
 
47 - 27.07.12 - 00:51
(45) допустим, я могу это сделать без вк и оле, но это точно будет медленно.
   NS
 
48 - 27.07.12 - 00:51
(46) Если поищешь, то ты найдешь первое определение синглтона, 1994-го года. И этот служебный элемент справочника (с его методами) - чисто подходит под это опредление.
http://habrahabr.ru/post/147373/
   Asmody
 
49 - 27.07.12 - 00:51
(47)+ и "честным" синглтоном это не будет
   Steel_Wheel
 
50 - 27.07.12 - 00:52
(44) Так вот, в чем проблема тогда?
Алгоритм примерно такой:
1. При открытии обработка смотрит: есть ли блокировка на константе, элементе справочника, файле. Если есть -- выход, нет -- блокировка и п.2
2. Начинаем делать что-то в транзакции (или нет -- не важно, суть не в этом)
3. Если не произошло ошибок, то коммитим транзакцию
4. Освобождаем блокировку
5. Закрываемся...

Мы п.1 гарантируем единственность инстанса обработки для всех пользователей внутри системы. Да, мы ничего не возвращаем, но это и не надо.
   Steel_Wheel
 
51 - 27.07.12 - 00:54
Хотя, можно и вернуть... Но я бы не стал. Возврат можно сделать за счет другого доступного элемента метаданных: там мы сохраним прогресс и восстановим состояние у копии
   Asmody
 
52 - 27.07.12 - 00:56
(48) элемент справочника не может быть синглтоном по определению, ибо ничто не мешает мне насоздавать сотни элементов справочника, не записывая их. и это будут разные объекты
   Asmody
 
53 - 27.07.12 - 00:58
(50) в том то и фишка, что при созжании объект должен создасться, либо вернуться тот же самый. а так это простой семафор, а не синглтон
   Asmody
 
54 - 27.07.12 - 00:59
(51) у синглтона не может быть копии, либо все копии должны быть синхронизированы
   Steel_Wheel
 
55 - 27.07.12 - 01:08
(54) ну, допустим, я могу вернуть копию. Хоть это и пляска с бубном.
Я сделаю, сериализацию в XML по тику. XML буду хранить в Хранилище Значений, или файле. Но это уже медленно.

Просто, в 1с, если мы гарантируем 1-у копию чего-нить, то это очень важное что-то, чтобы давать кому-то другому, доступ у нему.

(53) а как же 44: синглтон вообще может ничего не возвращать. главное — что он один.
Это ведь твои же собственные слова
   NS
 
56 - 27.07.12 - 01:49
(54) В данном случае возвращается копия. Именно при использовании как семафора (непонятно почему синглтон не может использоваться как семафор)
http://yandex.ru/yandsearch?text=cbyuknjy+ctvfajh&from=os&lr=2
, при этом копия полноценная. И признак блокировки не лажается никогда.
   NS
 
57 - 27.07.12 - 01:55
Вот интересное обсуждение, что-же такое синглтон.
http://www.ljpoisk.ru/archive/7211958.html
   NS
 
58 - 27.07.12 - 01:58
синглтон может управлять очередностью доступа к себе в многопоточных программах
...
Синглтон - это объект, существующий в единственном экземпляре.
Синглтон - это НЕ объект. Это код на ЯП который обеспечивает существование объекта в единственном экземпляре.

Паттерны, шаблоны программирования - это НЕ объекты, а способы написания классов, создания и взаимодействия объектов.
...
И с такой точки зрения, этот объект, и его методы (инициализация, загрузка из удаленной базы, и установка/получение статуса блокировки для управления загрузкой) - это самый настоящий синглтон.
   AlexSmolensky
 
59 - 27.07.12 - 12:41
(37) "Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё."
Кроме самих языков, развивается подход к решению задач. Например был метод Буча, сейчас Паттерны проектирования.
Так же есть и методы работы команды специалистов над проектом - что так же является частью программирования.

(41) "Принципы ООП никак не помогут"
Я так не думаю. В типовых конфигурациях явно видно их отсутствие:
1. В типовых конфигурациях излишне много используют глобальные переменные разного уровня, как результат - больше времени уходит на поддержку и невозможность повторного использования кода.
2. Срок жизни конфигурации - на сегодня составляет несколько лет, потом переписывают заново.


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.