![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
Народ, подскажите с выбором паттерна.
Есть модель пользователя (User). У пользователя есть "подельники". Есть в User метод addMoney(). И вот стратегия добавления немного запутанная. Есть допустим несколько операций для добавления денег 1. пользователь делится деньгами со своими "подельниками" с некоторым коэффициентом (все получают поровну) 2. пользователь делится деньгами со своими "подельниками" (все получают по-разному) 3. некоторая комиссия идёт администрации 4. деньги просто зачисляются на счёт пользователя 5. деньги вообще не зачисляются Причём упорядоченный набор выбирается в зависимости от некоторых условий. Например если у пользователя статус "Одиночка", то выполняется 3->4 если у пользователя статус "Свободный", то выполняется 4 если денег > 10000 то 3->1->4 И вообще, есть ли смысл применять какие-то паттерны? |
|||
|
||||
Arantir |
|
|||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
Обычно вопрос о применении паттерна встает в меру возникновения необходимости в этом.
Разные паттерны решают разные проблемы, ибо у каждого паттерна есть и плюсы и минусы. Паттерн полезен, когда минусы не играют роли на фоне плюсов. Вы привели лишь один класс и возможность его поведения в зависимости от его состояния. Почему Вы думаете, что Вам нужен какой-то паттерн? Почему, например, не сделать просто через набор if/elseif? Чем этот способ неудобен (личная неприязнь не считается)? -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
Во-первых не хочется смешивать общую логику с логикой делёжки денег.
Во-вторых хочется как то вынести указание этих условий и операций в конфигурационный файл, чтобы было проще редачить. Хотя думаю второе усложнит код... |
|||
|
||||
Arantir |
|
||||||||
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 1 Всего: 55 |
Создайте отдельный класс (такой себе бухгалтер), который будет в себе эту логику содержать. А в классе пользователя просто вызывайте метод бухгалтера
Ну для конф. файла и сложный условий придется писать некий псевдо-язык, парсить его и т.п... запарно немного. Java может компилить внешние классы. Так что можно вывести логику условий в отдельный внешний класс и писать условия сразу на Java. Такой себе ИИ поведения для бухгалтера.
Это похоже на паттерн стратегии. Контекстом выступает класс бухгалтера, а стратегией соответствующий ИИ. Это сообщение отредактировал(а) Arantir - 30.5.2013, 18:31 -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||||||
|
|||||||||
zasaz63 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.5.2013 Репутация: нет Всего: нет |
Спасибо! Это похоже на то, что надо)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |