Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Java: внутри файла MS Excel 2007. Часть четвёртая   В публикуемой сегодня части статьи заканчивается описание процедур загрузки электронной таблицы и начинается описание самого интересного - каким образом получить данные, хранящиеся в ячейках таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть третья   В предлагаемой вниманию читателя третьей части статьи о структуре файла электронной таблицы Microsoft Excel формата 2007 речь идёт о коде Java, "разархивирующем" файловый поток и формирующем объекты, с которыми предстоит взаимодействовать при дальнейшей обработке данных электронной таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть вторая   В настоящем материале автор постарается систематизировать свои знания о том, как устроено хранение данных электронной таблицы, и презентовать небольшую Java-библиотеку, предоставляющую возможность чтения данных и заполнения файла электронной таблицы Microsoft Excel
Шаблоны и примеры Читать статью
 


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

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

Паттерны. Часть 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
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Lotus notes и ЭЦП
29.09.2017 17:16:14
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
 
© LOGOSPHERE.RU