Этот соционический аспект связан с процессами в самом общем виде, с механикой, с целесообразным и выгодным движением.
Если эту функцию представлять в виде образа, то это образ постоянно находящихся в движении шестеренок. И темы общения напрямую связаны с деловой необходимостью. Черные логики стараются говорить о чем-то основательном, важном, нужном, дельном. «Действовать, проявлять деятельность, заниматься, быть занятым чем-нибудь, работать или трудиться, что-то производить.»
Эти люди живут в делах, потому что базовая функция больше самого человека.
В речи это проявляется очень отчетливо:
— Без дела не входить.
— Я к вам по делу.
— Поговорить по делу.
— У меня к нему дела.
— Какое мне до этого дело?
Деловые логики рассказывают о действиях. Для них в первую очередь важен не просто разговор как таковой, а к чему он приведёт; в споре можно отыскать истину, можно прийти к выводу. Разговаривать «ни о чем», просто, чтобы занять время, они не умеют. Даже если разговор будет на совершенно бытовую тему, деловой логик постарается из этого разговора извлечь какую-то пользу.
#8 Бизнес логика или детали реализации? — Vue.js: концепции
Им очень сложно удерживать внимание на бессодержательной информации. Возникает желание либо покинуть компанию, что больше свойственно интровертным типам, либо повлиять на разговор, внеся в него деловой конструктив. И это зачастую приводит к ярлыкам «нудный человек», «он постоянно грузит», «с ним нормально по душам нельзя поговорить».
Им не удаётся в компании просто так сидеть и слушать «болтовню». Они либо резко меняют тему, предлагая взамен свою, либо встают, посылают всех к чёрту и уходят. Они любят общаться на животрепещущие темы, а не слушать, кто о какой ерунде подумал; они предпочтут общаться в первую очередь про то, что и кто кому и как сказал, кто, как и кому ответил и сколько раз что-то сделал.
Человек с такой функцией в блоке Эго обращает внимание на то, чем он будет заниматься и как он будет решать какую-то задачу.
Эта функция — динамическая. Это значит, что преобладают процессы над статикой. В речи это может быть представлено как некая последовательность событий, которые описывают какой-то процесс.
В коммуникации с чёрными логиками происходит обмен некоторыми деловыми предложениями: «Давай это сделаем», «А вот я то сделал». Все о делах. Кто, что, где, когда делал. Деловой логик, как правило, начинает разговор с рассказа о событиях и только потом уже о том, какие они у него вызвали эмоции.
Это происходит вследствие того, что экстравертная функция направлена наружу, показательна. И спрашивают деловые логики о том же: «А чем ты занят? А что ты делал? Чем занимаешься, что будешь делать?».
Интровертные деловые логики (ИЛИ, СЛИ) настроены больше на получение информации, а экстравертные (ЛИЭ, ЛСЭ) — на её выдачу.
Если статическая структурная логика делает предложение, то динамическая предлагает. Если статическая структурная логика делает попытку, то динамическая пытается. Если статическая структурная логика делает выбор, то динамическая выбирает.
Бизнес-логика в веб-проекте. Проблема понимания бизнес-логики клиентских проектов. #bll #biz
Деловым логикам зачастую сложно самим сделать выбор, поэтому они ищут кого-то, чтобы он выбрал. При этом после получения ответа они все равно выберут что-то своё. Но ответ помогает сделать сам выбор, то есть он не бесполезен.
Например, жена (ЛСЭ) спрашивает у мужа(ЛИЭ), лак красный или розовый? Он отвечает: розовый. А она все равно красным накрасит. Но выбор ей помогает понять, насколько он заинтересован в содействии. Т.е. даже в сфере этики отношений люди оценивают других людей, как правило, с позиции ведущего блока модели А.
Разумеется, она прекрасно понимает, какой лак будет лучше смотреться. Ей важен не ответ, а участие. Соучастие в решении этого вопроса. Поскольку белая этика у неё — функция слабая, человеку как-то нужно ориентироваться в сфере отношений. И замечательно, когда оценка производится с сильных функций модели А. В противном случае, если человек начинает опираться на слабые функции в оценке событий и явлений своей жизни, все это приводит к сильным неврозам.
Если продолжить пример с ЛСЭ, то оценка со стороны слабых функций могла бы выглядеть так:
— Лак красный или розовый?
— Я не знаю.
— Говори быстрее, время поджимает, мы опаздываем!
— Красный.
— Почему ты так долго думал над ответом? Тебе безразлично, как я выгляжу?
Думаю, понятно, какое дальнейшее развитие событий будет у этой сценки. И это относится к любому психотипу. В главе «Каркас психики: Модель А» мы более подробно разберем этот вопрос и многие другие, связанные с работой функций модели А.
Экстравертная направленность динамической логики говорит о её стремлении к исследованию и сканированию того, что происходит в окружающем мире. Эта функция оперирует фактами, объективными сведениями, данными. То есть она знает о том, что и как происходит, как наиболее правильно должно происходить. События должны быть как-то взаимосвязаны между собой. Если взаимосвязи нет, то все кажется напрасным.
Если диалог ведется на одну основную тему, а человек резко меняет её, то у делового логика сразу возникает вопрос: а к чему, почему? И везде он ищет подобные связи.
К примеру, в учёбе только после того, как человек узнает, откуда что следует, у него в голове возникают аналогии на эту тему. Это также связано с работой модели А. После образования связей базовый деловой логик к ним не возвращается. Поэтому таких людей сложно в чем-либо переубедить. Сложно потому, что за всеми теми фактами, которые они выдают во внешний мир, стоит глубокая интровертная аналитическая работа.
А у творческого логика нет жесткой привязки к фактам, потому что факты связаны с фоновой функцией и зачастую зависят от контекста ситуации.
При этом и у базовых (ЛИЭ, ЛСЭ), и у творческих (ИЛИ, СЛИ) деловых логиков вопрос о технологиях, об алгоритмах, о процессах попадает в многомерные функции модели А.
Обладатели деловой логики, как правило, знают, как из большинства объективных ситуаций или положений извлечь ощутимую пользу. Это отслеживание объективно существующих правил, законов, знание фактов. Эта функция сильна в знании того, что правильно, как делается, как происходит, каковы те или иные технологии.
Деловые логики – представители серьёзных квадр, Гаммы и Дельты. У Штирлица (ЛСЭ) и Джека (ЛИЭ) это базовая функция. У Бальзака (ИЛИ) и Габена (СЭИ) — творческая. Серьезность в данном случае следует понимать как реальность, конкретность, объективность. Любое дело должно повлечь за собой какую-то объективную выгоду материального характера.
Поэтому навряд ли мы встретим на своем пути альтруистов с такой функцией. Эти люди просто так ничего не делают. И даже если со стороны это может выглядеть как благотворительность, то эта благотворительность поддерживается и одобряется здравым расчетом, целесообразностью и выгодностью данного дела.
То есть, за добрыми делами не может не стоять понимания того, что за добро нужно платить добром. Деловой логик надеется на то, что его добрый поступок человек запомнит и оценит, а потом при случае поможет ему. А некоторые люди осознание такой своей черты сильно переживают, а порой и вовсе испытывают чувство стыда. Но это секрет, который не разглашается.
Лишь в редких ситуациях деловые логики могут что-то пообещать, но не сделать. Если они знают, что не смогут выполнить обещание, то они и обещать не будут. Но если обещание не выполняется, значит, деловой логик действительно считает нецелесообразным предлагать свою помощь этому человеку. Сами они не всегда могут объяснить такое поведение даже самим себе.
Они просто знают, что эта помощь не приведет ни к чему хорошему. А если их все же начать расспрашивать, почему они не выполнили обещания, то они могут сказать фразу из серии: «Я хозяин своего слова: захотел — дал, захотел — забрал». Звучит это неэтично. Но что ещё можно ожидать от психотипов, у которых этика отношений – суггестивная или активационная функция?
Это уже вы, зная психотип человека, можете повлиять на него, сказав, что это выглядит совершенно некрасиво с его стороны — так разбрасываться обещаниями. И все же, если вам интересно с чем связана их позиция, то попросите человека объяснить, в связи с чем произошло такое изменение решения.
Как проявляется деловая логика в жизни? Она значит, что человек живет в мире дел. Просыпаясь, человек начинает мыслить деловыми категориями — какие у него сегодня есть полезные дела. Причем польза для каждого своя — это субъективное. Главное здесь то, что она обязательно проходит сквозь фильтр целесообразности и выгодности.
Критерием для принятия решения служат дело:
— Это дело невыгодное!
— Ты почему сидишь без дела?
— Какие у меня с ними дела?
Наличие деловой логики создает умение вычислять оптимальное решение проблем.
Если рассматривать эту функцию на уровне поведения, то это поступки, действия, их эффективность.
Анекдот:
-Эй, ты что там делаешь?
-Ничего!
-А ты?
-А я ему помогаю.
Если встает вопрос о знании, то возникает и вопрос — насколько оно соответствует объективным фактам.
Психотипы с деловой логикой в ведущем блоке модели А нуждаются в том, чтобы обогащать свои знания, свои навыки, методы своих действий, чтобы быть максимально эффективными. Поэтому они всегда чему-то учатся, пополняя свою копилочку знаний.
Когда этот аспект восприятия ведущий, человек отличается умением планировать свою работу и работу других людей, корректировать в соответствии с этим рабочую активность других людей.
Основная тема, на которую обращают внимание деловые логики — точные знания.
Когда человек говорит с позиции функции деловой логики, это всегда будет связано с разговором о конкретном случае.
Т.е. этик будет говорить о своем отношении к случаю, интуит — о своем виденье случившегося, сенсорик — о своем ощущении от случившегося. А деловой логик будет говорить о конкретном случае.
Пример: стоял на остановке, увидел, как справа из поворота на большой скорости машина пересекла двойную сплошную и столкнулась с автомобилем, который стоял на светофоре.
Речь закончена. Деловая логика передает точные факты. Деловая логика приводит данные, цифры, факты.
Структурный логик ту же ситуацию опишет иначе:
Пример: так, значит, что тут произошло? Я стоял возле автобусной остановки, ждал свой автобус. Автобус у меня приходит в 7.30, значит, это событие произошло примерно в 7.20, потому что примерно через 10 минут приехал автобус. Далее — я увидел столкновение. Очевидно, что шофер нарушил правила дорожного движения. Пересек двойную сплошную.
И врезался в автомобиль, стоявший на светофоре.
То есть, структурный логик попробует объяснить то, что случилось, а деловой логик расскажет то, как это произошло.
Если в сознании доминирующую роль исполняет деловая логика в сочетании с белой интуицией, то речь пойдет о синтетическом мышлении, поскольку интровертированная интуиция дает качества целостного подхода, гармоничного сочетания. ЛИЭ и ИЛИ будут уделять большое значение времени и месту случившегося.
К примеру, им при принятии решения важно узнать не вообще преимущества продукта, а конкретно для их компании.
И если поставщик говорит: исходя из площадей вашей организации и затрат на обслуживающий персонал, наши пылесосы окажут неоценимую выгоду в экономии по данному пункту — то такое предложение может вызвать ощутимый интерес.
Если же экстравертированное мышление сочетается с белой сенсорикой, то это мышление будет фактическим, экспериментальнм, очень конкретным, ориентированным на предмет, на ощущение. ЛСЭ и СЛИ будут уделять большое значение конкретике и деталям происходящего. Им важны подробности.
К примеру, если вы хотите продать представителям таких психотипов телефон, то вам нужно будет рассказать обо всех подробностях функционирования этого телефона: сколько часов держит батарея, через какое время требуется замена батареи, какие у этого телефона имеются функции. Перечисления этих подробностей может в них вызвать заинтересованность в покупке.
________________________________________ ____________
Деловым логикам самим нравится приводить разные цитаты и ссылаться в своих рассказах на источник информации. В их речи много цифр и фактов.
Пример работы блока ЧЛ/БИ: Это модель мая 2010 года. У этого телефона есть 100 функций. В целях экономии вашего времени я вам расскажу о десяти самых необходимых.
Если что-то непонятно, то деловой логик обязательно переспросит, уточнит:
— Что вы имеете в виду? Уточните, пожалуйста.
— Как конкретно эта штука работает?
— Как это называется?
— А это что означает?
— Из какого материала, вы говорите, это сделано?
И чем менее проявлена деловая логика в психике, тем меньше шансов, что человек вообще будет что-то уточнять(по этой причине СЭИ, ИЭИ крайне редко задают такие вопросы).
Если вы часто слышите похожие вопросы, то это может служить четким диагностическим критерием того, что деловая логика у этого человека достаточно сильно выражена.
Если в качестве контекста взять виртуальную среду, то на вашу публикацию деловые логики могут отреагировать примерно такими уточняющими вопросами:
— На основании каких фактов ты пришел к этим выводам?
— В каком авторитетном источнике можно прочитать об этом более подробно?
— Что ты имеешь в виду, говоря о том, что.
— Какие факты могут подтвердить то, что ты говоришь правду?
Речь, наполненная аспектом деловой логики, звучит очень весомо и убедительно.
И достигается это двумя способами.
Первый способ.
При помощи передачи точной, очень четкой, фактической информации: упоминание цифр, фактов, точных названий, приведение цитат и ссылок на источники.
Это больше свойственно ЛСЭ и СЛИ. Сенсорика в блоке Эго позволяет этим типам замечать конкретику поступающей информации и фокусирует их внимание на деталях.
Например, когда Вы слышите речь ЛСЭ, то иногда возникает ощущение, что он зазубрил эту информацию наизусть.
Второй способ.
При помощи придания веса сказанному такими словами, как «научно доказано, общепризнанно, однозначно, точно, достоверно». Больше свойственно Джекам и Бальзакам. Интуиция в блоке Эго позволяет этим типам прогнозировать и моделировать будущее. Поэтому если они говорят «научно доказано» — не факт, что уже доказано. Возможно, имеется в виду, что в скором времени будет доказано и признано.
К примеру, Джек, если рекламирует что-то, что ещё не известно никому и никак не подтверждено, но он видит в этом потенциал, то он будет это рекламировать как систему, которая признана мировым сообществом, потому что она работает. Но самое удивительное то, что он не врет! Потому что с большой степенью вероятности можно предположить: лет через 10 она будет признана мировым сообществом.
Также справедливо будет отметить, что деловые логики могут как активировать, заряжать своей информацией, так и перегружать.
Разумеется, это напрямую зависит от того, в какой функции модели А находится у вас деловая логика и в какой функции — у вашего собеседника. Если речь идет о базовой функции, то ещё достаточно легко переносится такая же базовая функция, а также суггестивная функция.
Когда вам рассказывают о делах на протяжении часа, то это ещё нормально, но когда более пяти часов, в одном и том же ритме, это на многих действует угнетающе. Иногда после такого общения возникает ощущение, что тебе в голову кирпичей наложили.
Фразы деловых логиков часто состоят из цепочек причинно-следственных связей: «затем. затем. затем»; «потом. после чего», «если. то».
К примеру: «затем. затем. затем» может длиться 5 минут, а может 5 часов, в зависимости от того, насколько человек в этом подкован.
И если рациональный деловой логик как-то пытается ранжировать информацию, то иррациональный может такой винегрет не связанных между собой элементов выдать, что возникает ощущение пребывания в тумане.
Перечисление мелких подробностей — детализация — свойственна сенсорным типам. К примеру: «Я в магазине таком-то купил теплый, шерстяной, очень нежный шарфик.» — т.е. идёт речь об одной единице информации, снабжённая максимальным количеством мелких объяснений.
У интуитивного делового логика речь также будет подробна, но и более генерализована: «Я купил, шарф, шапку, брелок к часам, носков две пары.».
Подробность в речи, возникает не только за счет большого количества фактической информации, ссылок, цифр, но также и за счет дословных или с небольшим переформулированием повторов в речи.
К примеру, ЛСЭ, если что-то рассказывает и его перебивают, начинает говорить сначала, слово в слово, то же, что говорил до этого. Причем это не фигуральное выражение, а действительно слово в слово. И это может за разговор произойти раз десять.
Если деловой логик ведет разные тренинги, то он может повторять целые куски информации из одного тренинга в другом.
Если другие психотипы будут говорить «Я могу. Я знаю», — то деловой логик: «Я профессионально, как эксперт, могу, знаю…» — и не просто «обладаю фактами», а «обладаю научно обоснованными, неоднократно подтвержденными и экспериментально доказанными фактами».
Пример из опыта работы менеджером по подбору персонала:
— Я являюсь профессионалом в своем деле. Обладаю экспертной оценкой. Мою квалификацию подтверждают дипломы и сертификаты по…
— Я знаю о таких технологиях оптимизации, как…
— Я профессионально, как эксперт, могу…
И последняя подтема, которую я хотел бы затронуть, — это оценка качеств и показатели процессов.
Лексика: выгодно, затратно, конструктивно, оправданно, оптимально, практично, эффективно, рационально и т.д.
Целесообразно купить этот телевизор, потому что он экономит электроэнергию за счет встроенных энергосберегающих батарей.
Т.е. если в этике мы оцениваем качества живых предметов, то в логике — качества неживых.
Уместно использовать такую лексику в работе:
— В презентации товаров, особенно технического характера.
— В презентации знаний, умений, навыков.
— В аргументации того, как надо работать. Как эффективнее, целесообразнее действовать.
Источник: socionik-practi.livejournal.com
Русские Блоги
15-Разделение пользовательского интерфейса и бизнес-логики
Каталог статей
- 1. Интерфейс и логика
- 2. Основные принципы проектирования
- 2.1 Связь между модулем и модулем
- 2.2 Концепция интерфейса
- 2.3 Взаимодействие между пользовательским интерфейсом и бизнес-логикой
- 2.3 Идеи дизайна между модулями
- 3.1 Схема общей архитектуры компьютерных приложений
- 3.2 Анализ архитектуры
1. Интерфейс и логика
Базовая структура обычно включает:
- Модуль пользовательского интерфейса принимает ввод пользователя и представляет данные
- Модуль бизнес-логики обрабатывает данные в соответствии с потребностями пользователя
Вопрос: Как взаимодействуют пользовательский интерфейс и бизнес-логика?
2. Основные принципы проектирования
2.1 Связь между модулем и модулем
- Развязка функциональных модулей
- Основная идея: сильная связь, слабая связь
-Каждый модуль должен реализовывать только одну функцию -Подмодули внутри модуля существуют только для одной функции в целом -Взаимодействие между модулями через согласованные интерфейсы
2.2 Концепция интерфейса
В широком смысле:
- Интерфейс — это договор (протокол, синтаксис, формат и т. Д.)
- Ориентированный на процесс: интерфейс представляет собой набор предопределенных функциональных моделей
- Объектно-ориентированный: интерфейс представляет собой чистый виртуальный класс (C # и Java напрямую поддерживают интерфейсы)
2.3 Взаимодействие между пользовательским интерфейсом и бизнес-логикой
2.3 Идеи дизайна между модулями
-Модули связаны только через интерфейсы Должны быть модули, использующие интерфейсы Должен быть модуль для реализации соответствующего интерфейса -Взаимосвязь между модулями — это единственная зависимость Избегайте циклических зависимостей между модулями Круговая зависимость — один из стандартов эскизного проекта.
3. Архитектура программы калькулятора.
3.1 Схема общей архитектуры компьютерных приложений
3.2 Анализ архитектуры
- В QCalculatorUI есть функция-член класса интерфейса, и в конструкторе для нее установлено значение NULL, что делает QCalculatorUI независимым от класса интерфейса, реализует слабую связь и предоставляет методы set и get этого класса интерфейса для соединения QCalculatorUI с
- QCalculatorDec наследуется от класса интерфейса ICalculator, поэтому этот класс можно передать объекту интерфейса QCalculatorUI.
- Класс QCalculator сочетает в себе QCalculatorUI (класс интерфейса) и QCalculatorDec (класс бизнес-логики).
4. Резюме
- Взаимодействие между модулями необходимо осуществлять через интерфейс
- Интерфейс — это своего рода контракт между разработкой модуля
- Нет циклических зависимостей между модулями
- Основные принципы проектирования: сильное сцепление, слабое сцепление
Источник: russianblogs.com
Модель домена и «Бизнес-логика»
Всякий раз, когда я читаю статью о современном шаблоне проектирования, таком как MVVM или DDD, мне трудно перевести этот пример в области, на которых я обычно работаю.
Все эти шаблоны приходят к выводу, что модели домена должны существовать в их собственном маленьком пузыре, не ссылаясь ни на что, не должны подвергаться представлению о привязке, должны быть POCOs/POJO и содержать “бизнес-логику”.
Вопрос, который я всегда задаю себе, заключается в следующем: что должна делать модель домена?
Ответ, очевидно, “Управление бизнес-логикой”, но когда я думаю о том, что может быть, мне не удается найти примеры в реальном мире.
Например: Один типичный пример, который всегда появляется, – это финансовые приложения, где у вас может быть объект BankAccount который может иметь функцию TransferMoneyTo(otherAccount) . Это звучит хорошо в теории, но в реальном мире это приложение не будет управлять всеми банковскими счетами мира, а просто счетами одного банка. Поэтому приложение реального мира должно было бы как-то связаться с другим банковским сервером, чтобы инициировать эту транзакцию. Это “как-то”, очевидно, является сервисом, которому не разрешается BankAccount на BankAccount . Это означает, что это не будет хорошим примером для изолированной модели домена.
До сих пор все примеры, которые я прочитал о том, где и как это, где пример работал, потому что он пренебрегал важными деталями или тривиальными. Тривиальным я имею в виду, что “бизнес-логика” просто состояла из простой проверки (например, обязательных полей).
Все это приводит к модели анемичной области (помимо проверки, возможно), которая, как предполагается, является плохим.
Мой вопрос: что скрывает термин “бизнес-логика” помимо проверки, что оправдывало бы необходимость отдельной модели домена?
Примечание. Я знаю, что это зависит от домена, над которым вы работаете, но я думаю, что, по крайней мере, какой-то пример, где DDD будет действительно полезен, будет оценен по достоинству.
Лучший ответ:
Многие модели доменов отражают бизнес-процессы и, следовательно, содержат государственные машины, в которых вы можете переходить из известного состояния в другое в соответствии с некоторыми правилами. Вы получаете такой процесс практически в каждом бизнесе. Другие домены могут включать более сложные внутренние алгоритмы и преобразования данных.
Они вряд ли попадают в упрощенную категорию “только проверки”, если вы не рассматриваете систему резервирования места в железнодорожной компании или процесс расчета государственного налога как “валидацию”.
Это “как-то”, очевидно, является сервисом, которому не разрешается иметь доступ к BankAccount
Что касается доменов, общающихся с внешним миром, это не совсем их ответственность. Как правило, у вас есть домен, излучающий событие, говорящее “это случилось!”. и прикладной контекст обрабатывает его и инициирует соответствующие связи с внешними системами.
Организация вызовов во внутренние и внешние подсистемы, чтобы потоки данных, вне и через приложение не являлись логикой домена, это проблема технического уровня приложения. Инверсия управления в той или иной форме (события, DI и т.д.) Обычно является ключом к тому, что домен не знает об этом.
У меня есть программное обеспечение для управления футбольным турниром, написанное на php (не совсем вершина oop),
Моя бизнес-логика включает калькулятор турнирной таблицы, в котором определяется, в какую позицию попала команда, основанная на результатах их игр. Стратегии разрыва связи могут быть немного задействованы. Другая бизнес-логика включает в себя планирование игр, назначение судей и координацию волонтеров.
Эта логика сидит в том, что я считаю слоем домена. Мои сущности сами (игры и т.д.) Имеют тенденцию к анемии. Просто не так много для них, кроме данных об удержании. Но это прекрасно со мной. Это классы обслуживания, где приходит настоящая работа.
Я использую или ограниченный контекст и сводные корневые концепции. В состав моей игры входят команды, чиновники и поле. Когда я нахожусь в игровом контексте, тогда игра королева и отвечает за нее детьми. В контексте управления полем поле является боссом, а игры – просто для езды.
Я добиваюсь постоянной независимости. Я могу моделировать объекты домена и объекты значений, чтобы отражать требования к домену, не беспокоясь о том, в каких таблицах они будут находиться. Уровень ORM заботится о сопоставлении и позволяет мне хранить один доменный объект на нескольких таблицах или наоборот.
Дело в том, что выберете материал из DDD, который поможет вашим конкретным приложениям. Не беспокойтесь обо всем остальном.
Это “как-то”, очевидно, является сервисом, которому не разрешается BankAccount на BankAccount . Это означает, что это не будет хорошим примером для изолированной модели домена.
Хотя BankAccount не имеет ссылки на себя для этой услуги, он все равно может взаимодействовать с такой услугой.
Для более простого примера возьмем вычисление интереса. Наивный подход может быть:
public BankAccount < public decimal Balance < get; set; >public decimal Interest < get; set; >private public List transactions = new List(); public List Transactions < get < return transactions; >> public decimal CalculateInterest() < return Balance * Interest; >> // inside a service BankAccount account = . ; var interest = account.CalculateInterest(); account.Balance += interest; account.AddTransaction(new Transaction() < Description = «Monthly Interest», Amount = interest >);
Что плохо, потому что теперь у вас смешанные обязанности. Вычисление интереса не относится к классу BankAccount, и теперь оно связано с несколькими обязанностями, такими как вычисление, которое может меняться или зависеть от нескольких факторов.
public BankAccount < // private setters, so no one outside BankAccount can update it directly public decimal Balance < get; private set; >public AccountType AccountType < get; private set; >// assume business and private account private public List transactions = new List(); // return as «AsEnumerable» so user can’t later cast it back to list and // directly add Transactions, skipping the AddTransaction method public IEnumerable Transactions < get < return transactions.AsEnumerable(); >> public void CalculateInterest(IInterestCalculator calc) < decimal interest = calc.CalculateInterest(this); this.AddTransaction(new Transaction() < Description = «Monthly Interest», Amount = interest >); > public void AddTransaction(Transaction transaction) < var newBalance = this.Balance + transaction.Balance; if(this.transaction.Amount < 0 newBalance < this.Limit) < // new balance would exceed the accounts limit throw new NotEnoughFundsException(); >this.transactions.Add(transaction); this.Balance = newAmount; > > public interface IInterestCalculator < decimal CalculateInterest(Bankaccount); >public class DefaultAccountInterestCalculator : IInterestCalculator < public decimal CalculateInterest(BankAccount account) < // for sake of simplicity, inlined return account.Balance * 0.02; >> public class PremiumAccountInterestCalculator : IInterestCalculator < private const decimal Threshold = 10000m; public decimal CalculateInterest(BankAccount account) < // Premium customers receive increased interest, above a certain threshold. 3% for the balance above the threshold of 10000 USD if(account.Balance >Threshold) < return (decimal)((Threshold * 0.02) + (account.Balance-Threshold) * 0.03); >else < return (decimal)(account.Balance * 0.02); >> >
В вашем сервисе
BankAccount account = . ; IInterestCalculator calculator = (account.AccountType == AccountType.Premium)?new PremiumAccountInterestCalculator():DefaultAccountInterestCalculator(); BankAccount account.CalculateInterest(calculator);
Теперь у вашего класса BankAccount есть только одна ответственность, поддерживающая его состояние и требуемая для этого бизнес-логика (т. BankAccount достаточно ли баланса, только разрешайте манипулирование банковским счетом с помощью методов, а не напрямую изменяете Balance или манипулируете List .
И вычисление выполняется классами калькулятора, которые передаются BankAccount CalculateInterest BankAccount . Служба содержит требуемую логику, которая не вписывается в калькулятор или класс BankAccount.
Короче говоря: бизнес-логика (в модели с богатым доменом) – это вся логика, необходимая для того, чтобы класс поддерживал его состояние и инкапсулировал его как можно больше. Во втором классе невозможно напрямую изменить баланс. AddTransaction либо AddTransaction либо CalculateInterest (для расчета процентов).
Это гарантирует (при условии, что он совместим с безопасностью), что Balance и Transactions всегда будут в согласованном состоянии (т.е. Никогда не пропускать, чтобы добавить баланс транзакции или обновления).
Источник: techarks.ru