Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Шаблоны и примеры

Главная   Библиотека   Шаблоны и примеры

Паттерны. Часть 5. Factory

Часть 1. Фасад >>>
Часть 2. Фасад для абстрактного документа >>>
Часть 3. Фасад для документа >>>
Часть 4. Итератор >>>
Часть 5. Factory

Денис Самойлович

Теперь хочу поделиться несколько необычной интерпретацией понятия Factory в лотусовых приложениях.

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

Какие возможны варианты решения этой задачи:

1) самый плохой: для каждого документа лукапить его шаблон.
2) чуть получше: загрузить сразу все шаблоны в список и брать шаблон из списка по ключу.
3) идеальный: нарисовать некий Factory, который лукапит шаблон и кладет его во внутренний кэш. В следующий раз, при запросе этого же шаблона, шаблон будет браться из кэша.

Public Class PatternsFactory As Something
' SML
'
	meDB As NotesDatabase
	meLookup As NotesView
	meCache List As Pattern

	Sub New(sourceDB As NotesDatabase), Something()
	' SML
	'
		Set meDB = sourceDB

		Set meLookup = meDB.GetView(VIEW_PATTERNS_LOOKUP)
		call meLookup.Refresh
		meLookup.AutoUpdate = False

	End Sub ' New

	Function ProducePattern(key$) As Pattern
	' SML
	'	
	try:
		On Error Goto catch
		Set ProducePattern = Nothing

		' get key suitable for search
		Dim lookupKey$
		lookupKey$ = meTransformKey(key$)
		If lookupKey$ = "" Then Exit Function

		' check internal cache
		If Iselement(meCache(lookupKey$)) Then
			Set ProducePattern = meCache(lookupKey$)
			Exit Function
		End If

		' lookup document by key
		Dim doc As NotesDocument
		Set doc = meLookup.GetDocumentByKey(lookupKey$)

		' generate pattern
		Dim pattern As Pattern
		If doc Is Nothing Then
			Set pattern = Nothing
		Else
			Set pattern = New Pattern(doc)
		End If

		' update internal cache
		Set meCache(lookupKey$) = pattern

		' return pattern
		Set ProducePattern = pattern
		Exit Function

	catch:
		Resume finally
	finally:

	End Function ' ProducePattern

	Private Function meTransformKey(key$) As String
	' SML
	'
		meTransformKey = key$

	End Function ' meTransformKey

	Sub ClearCache
	' SML
	'	
		Erase meCache

	End Sub ' ClearCache

End Class ' PatternsFactory

Часть 1. Фасад >>>
Часть 2. Фасад для абстрактного документа >>>
Часть 3. Фасад для документа >>>
Часть 4. Итератор >>>
Часть 5. Factory

Читайте на Notesnet.ru

О пользе ООП при проектировании систем на платформе Lotus Notes/Domino >>>
Пример UI элемента на основе паттерна MVC >>>
Использование паттерна MVC в модальных диалоговых окнах >>>
 
  Опубликовано — 08/31/2009 |    



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU