|
Использование паттернов проектирования | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
AlexSmolensky
26.07.12
✎
23:45
|
Кто-нить использует паттерны в проектировании своих систем на 1С?
|
|||||||||||||
1
Asmody
26.07.12
✎
23:46
|
это какие?
|
|||||||||||||
2
zak555
26.07.12
✎
23:46
|
А что это? |
|||||||||||||
3
Steel_Wheel
26.07.12
✎
23:47
|
(0) А какие ты видишь паттерны, которые можно использовать в 1С?
Я только "Одиночка" и "Строитель"... |
|||||||||||||
4
Asmody
26.07.12
✎
23:47
|
нарисуйте синглетон на 1С, пожалуста…
|
|||||||||||||
5
Steel_Wheel
26.07.12
✎
23:48
|
(4) Запуск 1-го экземпляра определенной обработки очень часто встречается. Реализуется через константу или файлы
|
|||||||||||||
6
Steel_Wheel
26.07.12
✎
23:49
|
А на "Строителе" отчеты не через СКД сделаны (т.е. ты его используешь, но сделан он самой 1С)
|
|||||||||||||
7
Asmody
26.07.12
✎
23:51
|
(5) да ой! типа я не могу использовать обработку _кроме как_ через константу?
|
|||||||||||||
8
vde69
26.07.12
✎
23:51
|
(4) любой глобальный модуль можно расматривать как отдельный синглетон, правда без наследования.
хотя сейчас они стали делать 4 глобальника, один из которых преднозначен для расширения пользователем |
|||||||||||||
9
Asmody
26.07.12
✎
23:51
|
(6) то, что 1С'ю реализовано, мы в расчёт не берём
|
|||||||||||||
10
Asmody
26.07.12
✎
23:53
|
(8) с фигали глобальник синглтон?
|
|||||||||||||
11
Asmody
26.07.12
✎
23:53
|
(9)+ в платформе
|
|||||||||||||
12
Steel_Wheel
26.07.12
✎
23:57
|
(9) ок, тогда строителя нет
(7) а как? Если обработка будет "смотреть" на константу, и перед открытием, если константа не в нужном состоянии, не открываться? |
|||||||||||||
13
H A D G E H O G s
26.07.12
✎
23:58
|
Кто все эти люди?
|
|||||||||||||
14
Steel_Wheel
26.07.12
✎
23:59
|
+12 подразумеваем, что, когда обработка открывается и закрывается, она сама меняет константу. Если константа в "плохом" состоянии, обработка не открывается, появляется сообщение об ошибке
|
|||||||||||||
15
H A D G E H O G s
27.07.12
✎
00:03
|
Паттерны, ООП (в 1С), UML и прочая, прочая, прочая напоминают мне математику.
Прикладники пытаются сделать науку из инструмента. Накуа? За красивые фразы платить больше не будут. Идите кодить, заводы стоят. |
|||||||||||||
16
H A D G E H O G s
27.07.12
✎
00:08
|
Автору пройти тест из
Матрица компетентности программиста Вы созданы друг для друга. Уверен, ты наберешь там неплохо баллов и поднимешь свое ЧСВ получше, чем (0) пост. |
|||||||||||||
17
NS
27.07.12
✎
00:18
|
(4) У меня куча загрузок с других баз, и для исключения конфликтов (дублей и наоборот пропавших документов) может быть запущен только один экземпляр обработки одновременно. Естественно сделано не через константу, и не через файлы - что чревато глюками, а через блокировку служебного элемента служебного справочника.
|
|||||||||||||
18
Asmody
27.07.12
✎
00:19
|
(17) это не синглтон
|
|||||||||||||
19
NS
27.07.12
✎
00:22
|
(18) интересно, а чем-же является этот служебный элемент этого служебного справочника?
|
|||||||||||||
20
Asmody
27.07.12
✎
00:25
|
(19) элементом справочника он является
|
|||||||||||||
21
NS
27.07.12
✎
00:26
|
(20) И чем же конкретно он не синглтон?
|
|||||||||||||
22
Asmody
27.07.12
✎
00:28
|
написать синглтон на 1С можно, например, с помощью параметров сеанса, но это будет синглтон внутри сеанса, а не системы в целом
|
|||||||||||||
23
serffer
27.07.12
✎
00:28
|
(21) а если через фоновое-регламентное задание с уникальностью по ключу.
Бывало |
|||||||||||||
24
Asmody
27.07.12
✎
00:29
|
(21) потому что это не синглтон
|
|||||||||||||
25
NS
27.07.12
✎
00:29
|
(24) Синглотон это объект обладающий некоторыми свойствами.
Какими свойствами необходимыми синглтону он не обладает? |
|||||||||||||
26
Asmody
27.07.12
✎
00:31
|
классический синглтон — это объект, создание которого возможно только в единственном экземпляре. любое повторное создание того же объекта должно возвращать тот же объект
|
|||||||||||||
27
Asmody
27.07.12
✎
00:32
|
(25) иди читай GoF, там всё написано
|
|||||||||||||
28
NS
27.07.12
✎
00:32
|
(26) Так и есть. Он создается (если не существует) при попытке прочитать выгрузку с удаленной базы.
Если он уже есть - то он не создается, а используется текущий объект. |
|||||||||||||
29
NS
27.07.12
✎
00:33
|
(27) А сам прочитать не можешь?
|
|||||||||||||
30
Asmody
27.07.12
✎
00:33
|
фасады, фабрики на 1С делаются легко (ну почти), куча паттернов пеализует сама платформа
|
|||||||||||||
31
Asmody
27.07.12
✎
00:35
|
(28) только "синглетонность" — это свойство самого объекта, а не его окружения
|
|||||||||||||
32
NS
27.07.12
✎
00:39
|
(31) у объекта есть методы. И если при инициализации (использования метода инициализация) объекта в случае его существования мы не плодим новый, а взвращаем существующий, а в случае отсутствия создаем - это уже синлтон.
|
|||||||||||||
33
Asmody
27.07.12
✎
00:40
|
(32) и? или в 1С внезапно появились конструкторы?
|
|||||||||||||
34
AlexSmolensky
27.07.12
✎
00:41
|
(15) Программирование уже давно стало наукой, пока еще молодой и бурно развивающейся.
По своей сути, любая наука - это структурированные знания, которые используют в решении практических задач. ООП родилось не как предмет для изучения студентами, а как необходимость. Хоть язык 1С и не является ООП, но зная принципы (не определения, а именно откуда ноги растут) можно создавать конфигурации, которые будет легче поддерживать и развивать. |
|||||||||||||
35
NS
27.07.12
✎
00:43
|
(33) Неважны средства которыми ты создал объект который ведет себя как синглтон.
Вот по сути определение сингтона - Singleton* Singleton::Instance() { if(_instance == 0){ _instance = new Singleton; } return _instance; } |
|||||||||||||
36
Asmody
27.07.12
✎
00:46
|
(35) только ты забыл, что _instance у тебя — static.
|
|||||||||||||
37
H A D G E H O G s
27.07.12
✎
00:46
|
(34) "молодой и бурно развивающейся"
Ага, ага. Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё. |
|||||||||||||
38
Steel_Wheel
27.07.12
✎
00:47
|
А если Синглтон себя не возвращает -- это не синглтон?
|
|||||||||||||
39
Asmody
27.07.12
✎
00:47
|
как сделать так, чтобы обработка всегда открывала один и тот же экземпляр в рамках всей системы (а не сеанса)?
|
|||||||||||||
40
Steel_Wheel
27.07.12
✎
00:47
|
Кмк, это не основная его черта. Основная -- единственность
|
|||||||||||||
41
H A D G E H O G s
27.07.12
✎
00:47
|
(34) Принципы ООП никак не помогут
"создавать конфигурации, которые будет легче поддерживать и развивать". |
|||||||||||||
42
NS
27.07.12
✎
00:48
|
(36) Нет. У меня сотня пользователей в базе. И соотвественно у каждого свой _instance
|
|||||||||||||
43
Steel_Wheel
27.07.12
✎
00:48
|
(39) Да, нетрудно, на самом деле. НО зачем?
|
|||||||||||||
44
Asmody
27.07.12
✎
00:48
|
(38) синглтон вообще может ничего не возвращать. главное — что он один.
|
|||||||||||||
45
H A D G E H O G s
27.07.12
✎
00:49
|
(39) Я могу это сделать. Но это будет пляска в ВК, OLE и медленно и печально.
|
|||||||||||||
46
Asmody
27.07.12
✎
00:49
|
(42) тогда это не синглтон
|
|||||||||||||
47
Asmody
27.07.12
✎
00:51
|
(45) допустим, я могу это сделать без вк и оле, но это точно будет медленно.
|
|||||||||||||
48
NS
27.07.12
✎
00:51
|
(46) Если поищешь, то ты найдешь первое определение синглтона, 1994-го года. И этот служебный элемент справочника (с его методами) - чисто подходит под это опредление.
http://habrahabr.ru/post/147373/ |
|||||||||||||
49
Asmody
27.07.12
✎
00:51
|
(47)+ и "честным" синглтоном это не будет
|
|||||||||||||
50
Steel_Wheel
27.07.12
✎
00:52
|
(44) Так вот, в чем проблема тогда?
Алгоритм примерно такой: 1. При открытии обработка смотрит: есть ли блокировка на константе, элементе справочника, файле. Если есть -- выход, нет -- блокировка и п.2 2. Начинаем делать что-то в транзакции (или нет -- не важно, суть не в этом) 3. Если не произошло ошибок, то коммитим транзакцию 4. Освобождаем блокировку 5. Закрываемся... Мы п.1 гарантируем единственность инстанса обработки для всех пользователей внутри системы. Да, мы ничего не возвращаем, но это и не надо. |
|||||||||||||
51
Steel_Wheel
27.07.12
✎
00:54
|
Хотя, можно и вернуть... Но я бы не стал. Возврат можно сделать за счет другого доступного элемента метаданных: там мы сохраним прогресс и восстановим состояние у копии
|
|||||||||||||
52
Asmody
27.07.12
✎
00:56
|
(48) элемент справочника не может быть синглтоном по определению, ибо ничто не мешает мне насоздавать сотни элементов справочника, не записывая их. и это будут разные объекты
|
|||||||||||||
53
Asmody
27.07.12
✎
00:58
|
(50) в том то и фишка, что при созжании объект должен создасться, либо вернуться тот же самый. а так это простой семафор, а не синглтон
|
|||||||||||||
54
Asmody
27.07.12
✎
00:59
|
(51) у синглтона не может быть копии, либо все копии должны быть синхронизированы
|
|||||||||||||
55
Steel_Wheel
27.07.12
✎
01:08
|
(54) ну, допустим, я могу вернуть копию. Хоть это и пляска с бубном.
Я сделаю, сериализацию в XML по тику. XML буду хранить в Хранилище Значений, или файле. Но это уже медленно. Просто, в 1с, если мы гарантируем 1-у копию чего-нить, то это очень важное что-то, чтобы давать кому-то другому, доступ у нему. (53) а как же 44: синглтон вообще может ничего не возвращать. главное — что он один. Это ведь твои же собственные слова |
|||||||||||||
56
NS
27.07.12
✎
01:49
|
(54) В данном случае возвращается копия. Именно при использовании как семафора (непонятно почему синглтон не может использоваться как семафор)
http://yandex.ru/yandsearch?text=cbyuknjy+ctvfajh&from=os&lr=2 , при этом копия полноценная. И признак блокировки не лажается никогда. |
|||||||||||||
57
NS
27.07.12
✎
01:55
|
Вот интересное обсуждение, что-же такое синглтон.
http://www.ljpoisk.ru/archive/7211958.html |
|||||||||||||
58
NS
27.07.12
✎
01:58
|
синглтон может управлять очередностью доступа к себе в многопоточных программах
... Синглтон - это объект, существующий в единственном экземпляре. Синглтон - это НЕ объект. Это код на ЯП который обеспечивает существование объекта в единственном экземпляре. Паттерны, шаблоны программирования - это НЕ объекты, а способы написания классов, создания и взаимодействия объектов. ... И с такой точки зрения, этот объект, и его методы (инициализация, загрузка из удаленной базы, и установка/получение статуса блокировки для управления загрузкой) - это самый настоящий синглтон. |
|||||||||||||
59
AlexSmolensky
27.07.12
✎
12:41
|
(37) "Последнее развитие - это языки высокого уровня. Ну еще ООП с натяжкой. Всё."
Кроме самих языков, развивается подход к решению задач. Например был метод Буча, сейчас Паттерны проектирования. Так же есть и методы работы команды специалистов над проектом - что так же является частью программирования. (41) "Принципы ООП никак не помогут" Я так не думаю. В типовых конфигурациях явно видно их отсутствие: 1. В типовых конфигурациях излишне много используют глобальные переменные разного уровня, как результат - больше времени уходит на поддержку и невозможность повторного использования кода. 2. Срок жизни конфигурации - на сегодня составляет несколько лет, потом переписывают заново. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |