Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Design, какой паттерн примерить  
:(
    Опции темы
sergioK1
Дата 4.2.2011, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



The Application:
Код


You are responsible for developing an application that will be able to process multiple types of items. This application listens to a message queue, from which it receives items of various types. For instance, it may receive a message containing a balloon, which it will have to pop, followed by a message containing an image, which it will have to display, followed by another message containing a mail descriptor, which it will have to send.
The message queue from which you retrieve the messages has the following method, which you can use:

    public static Object nextMessage();

This method returns null in case no message is currently available, or an object typed for the specific message (e.g. Balloon, Image, or MailDescriptor).

Requirements & assumptions:
    The messages that you receive may come from external systems, so you have no control over their classes.
    This application should be as scalable and extensible as possible. Keep in mind that many other types of messages that should be processed by this application will be added as time goes by.
    Try to make this application efficient, in terms of memory and performance.



Помоему тут обычный factory только куда тут static прикрутить ? У кого какие мысли будут ?



Это сообщение отредактировал(а) sergioK1 - 4.2.2011, 14:18
PM MAIL   Вверх
COVD
Дата 4.2.2011, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: нет
Всего: 43



static тут ни при чем. Для упрощения формулировки задачи, наверное. 
Важно, что метод nextMessage() неблокирующий, так как возвращает null. Поэтому нужен таймер, который периодически опрашивает очередь. Далее, некоторые задачи, связанные с ГУИ (baloon,image)  надо выполнять в EventDispatchThread. Другие (емайл) надо выполнять в отдельном потоке, потому что это сетевая операция с непредсказуемым временем выполнения. Для таких задач нужен пул потоков. Наконец, нужен Мап (это и будет очевидно Фактори), где каждому имени класса мессаджа будет указано имя класса обработчика. Эти пары могут быть прописаны в свойствах приложения. Чтобы добавить обработку нового сообшения, надо перестартовать приложение. А чтобы это делать "налету", надо приложение строить на плагинной архитектуре. Типа OSGi.   
PM MAIL   Вверх
sergioK1
Дата 4.2.2011, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(COVD @ 4.2.2011,  17:35)
static тут ни при чем. Для упрощения формулировки задачи, наверное. 
Важно, что метод nextMessage() неблокирующий, так как возвращает null. Поэтому нужен таймер, который периодически опрашивает очередь. Далее, некоторые задачи, связанные с ГУИ (baloon,image)  надо выполнять в EventDispatchThread. Другие (емайл) надо выполнять в отдельном потоке, потому что это сетевая операция с непредсказуемым временем выполнения. Для таких задач нужен пул потоков. Наконец, нужен Мап (это и будет очевидно Фактори), где каждому имени класса мессаджа будет указано имя класса обработчика. Эти пары могут быть прописаны в свойствах приложения. Чтобы добавить обработку нового сообшения, надо перестартовать приложение. А чтобы это делать "налету", надо приложение строить на плагинной архитектуре. Типа OSGi.

Не тут пока не идет речь конретно о жаве, пока это только дизайн может писать будеа на С++, может на жава , может не Я решаю .

что значит что метод nextMessage() неблокирующий? совсем понял.
пока смотрю в сторону  has a , то есть Я создаю прокси обьест скажем баллон а нем ссылка на баллон из внешней системы, и абстактный метод recieve , т,е изменили мне интерфейс этого внешнего баллона Я меняю реализацию баллона или другого конкретного обьеста,

советуют применить Visitor (http://en.wikipedia.org/wiki/Visitor_pattern)  вроде бы экономит память, или не очень?
но на первый взгляд  напоминает cтарый TDD, или взгляд у меня косой ? smile 

В общем что лучше и когда прокси или декоратор? 









PM MAIL   Вверх
COVD
Дата 5.2.2011, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: нет
Всего: 43



Цитата

что значит что метод nextMessage() неблокирующий? совсем понял.

Пример блокирующего метода - в сокетах accept() (в блокирующем режиме) - если нечего возвращать, то не возвращает, т.е. блокирует вызывающий поток.
PM MAIL   Вверх
_sten_
Дата 5.2.2011, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 29.9.2006

Репутация: нет
Всего: 3



попахивает тестовым заданием при поиске работы.

Цитата

пока смотрю в сторону  has a , то есть Я создаю прокси обьест скажем баллон а нем ссылка на баллон из внешней системы, и абстактный метод recieve , т,е изменили мне интерфейс этого внешнего баллона Я меняю реализацию баллона или другого конкретного обьеста,

советуют применить Visitor (http://en.wikipedia.org/wiki/Visitor_pattern)  вроде бы экономит память, или не очень?
но на первый взгляд  напоминает cтарый TDD, или взгляд у меня косой ? smile 

В общем что лучше и когда прокси или декоратор? 

мало что понятно.... но по моему ты смотришь не в ту сторону

На твой вопрос полностью ответил COVD. Если у тебя будет не джава то ничего особенно не поменяется, кроме названий технологий.
--------------------
WARNING: Condition 'to_be || !to_be' is always 'true' !
PM MAIL ICQ   Вверх
sergioK1
Дата 5.2.2011, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(_sten_ @ 5.2.2011,  13:12)
попахивает тестовым заданием при поиске работы.

Цитата

пока смотрю в сторону  has a , то есть Я создаю прокси обьест скажем баллон а нем ссылка на баллон из внешней системы, и абстактный метод recieve , т,е изменили мне интерфейс этого внешнего баллона Я меняю реализацию баллона или другого конкретного обьеста,

советуют применить Visitor (http://en.wikipedia.org/wiki/Visitor_pattern)  вроде бы экономит память, или не очень?
но на первый взгляд  напоминает cтарый TDD, или взгляд у меня косой ? smile 

В общем что лучше и когда прокси или декоратор? 

мало что понятно.... но по моему ты смотришь не в ту сторону

На твой вопрос полностью ответил COVD. Если у тебя будет не джава то ничего особенно не поменяется, кроме названий технологий.



Видимо про дезайн и UML тут не слышали  smile , переформулием вопрос proxy vs visitor . что лучше и когда?
То что написал CОVD, напоминает Java докуметацию, очень лаконично но что с этим делать не понятно ,  вернее понятно 
тем кто с этим лет 5 работает ,ну и примеров море smile 
Напоминает это ответ заказчику,  знающему технологию на уровне bazzords, что-бы тот думал что тут ребята крутые   smile  
(Сам такие трюки люблю)

А что у вас в фирме дает такие задачи  при приеме на работу ? И в чем смысл ? 


Это сообщение отредактировал(а) sergioK1 - 5.2.2011, 21:08
PM MAIL   Вверх
COVD
Дата 5.2.2011, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: нет
Всего: 43



Цитата

То что написал CОVD, напоминает Java докуметацию, очень лаконично но что с этим делать не понятно ,  вернее понятно 
тем кто с этим лет 5 работает ,ну и примеров море  
Напоминает это ответ заказчику,  знающему технологию на уровне bazzords, что-бы тот думал что тут ребята крутые     
(Сам такие трюки люблю)

Должен быть диалог, а не монолог. Вы переспросили про "неблокирующий" - я пояснил. Нет смысла расписывать подробности наперед. Потому что, бывает, задают вопрос и исчезают. Или вопрос неправильно понят или сформулирован. Вот чего бы я распинался, когда вас оказывается на самом деле интересует "proxy vs visitor".  Тут я ничего сказать не могу. 
PM MAIL   Вверх
sergioK1
Дата 6.2.2011, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



[QUOTE=COVD,5.2.2011,  23:31]
Цитата

Должен быть диалог, а не монолог. Вы переспросили про "неблокирующий" - я пояснил. Нет смысла расписывать подробности наперед. Потому что, бывает, задают вопрос и исчезают. Или вопрос неправильно понят или сформулирован. Вот чего бы я распинался, когда вас оказывается на самом деле интересует "proxy vs visitor".  Тут я ничего сказать не могу.


Мне почему-то казалось очевидным что это вопрос дизайна, 
напоминает американских тракеров в Индии smile , одни не понимают чего другие все время гудят, а вторые не понимают чего тем непонятно  smile 

С патернами вроде понятно ,  если пару дней никто не выскажется - можно закрывать тему ,

Но все равно спасибо , в любом случае собирался заняться сокетами,

Это сообщение отредактировал(а) sergioK1 - 6.2.2011, 00:07
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Design, Quality, Testing | Следующая тема »


 




[ Время генерации скрипта: 0.0818 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.