【設計模式之美】<Reading Notes>貧血模型與充血模型

小知識

需要了解的一些名詞

1、領域驅動設計(Domain Driven Design,簡稱 DDD)

2、MVC 三層架構 : M 表示 Model,V 表示 View,C 表示 Controller。
它將整個項目分為三層:展示層、邏輯層、數據層。
現在很多項目前后端分離,后端負責暴露接口給前端調用。將后端項目分為 Repository 層、Service 層、Controller 層。其中,Repository 層負責數據訪問,Service 層負責業務邏輯,Controller 層負責暴露接口。

貧血模型

只包含數據,不包含業務邏輯的類,就叫作貧血模型(Anemic Domain Model)。
如下:
UserBo 是一個純粹的數據結構,只包含數據,不包含任何業務邏輯。業務邏輯集中在 UserService 中。我們通過 UserService 來操作 UserBo。換句話說,Service 層的數據和業務邏輯,被分割為 BO 和 Service 兩個類中。

// Service+BO(Business Object) //
public class UserService { private UserRepository userRepository; //通過構造函數或者IOC框架注入 public UserBo getUserById(Long userId) { UserEntity userEntity = userRepository.getUserById(userId); UserBo userBo = [...convert userEntity to userBo...]; return userBo; }
}
public class UserBo {//省略其他屬性、get/set/construct方法 private Long id; private String name; private String cellphone;
}

這種貧血模型將數據與操作分離,破壞了面向對象的封裝特性,是一種典型的面向過程的編程風格。

充血模型

數據和對應的業務邏輯被封裝到同一個類中的類稱為充血模型。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377394.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377394.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377394.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TAFE的完整形式是什么?

TAFE:拖拉機和農用設備 (TAFE: Tractors and Farm Equipment) TAFE is an abbreviation of Tractors and Farm Equipment Limited. It is an Indian tractor manufacturer which is founded at Chennai in 1960. It is the second-largest tractor manufacturer in …

Oracle 10g 數據庫的備份和還原

一、備份數據庫1.在圖形工具中,如sqldeveloper,pl/sqldeveloper用以下這句查找空表select alter table ||table_name|| allocate extent; from user_tables where num_rows0;2.把第一步執行得到的結果當用sql語來再次執行3.到oracle服務器上執行備份語句. 運行-cmd …

用戶行為分析指導電商精細化運營

規模和利潤,這兩個在商業運營中最基本的指標,卻在電子商務市場中遭遇了不同的待遇。前兩年,幾乎所有的電商企業都只追求規模,不追求利潤,導 致自身的運營極其粗放,絕大多數電商公司只有兩招:猛打…

【C++基礎】 類模板

類模板 模板是將類中某些類型變為泛型,從而定義一個模板。 如下: 類模板的語法 直接進行對比: 泛型化之前 泛型化之后類模板的實例化 注意:只要是對類模版進行實例化,編譯器就會生成一個類!&#xff0…

ruby 怎么拋異常_Ruby中的異常處理

ruby 怎么拋異常Ruby異常處理 (Ruby Exception Handling) Exceptions are abnormal conditions arising in the code segment at runtime in the form of objects. There are certain predefined Exception classes whereas we can create our exception known as Custom excep…

cocos2d-x游戲開發系列教程-中國象棋02-main函數和歡迎頁面

之前兩個博客講述了象棋的規格和工程文件之后,我們繼續深入的從代碼開始學習cocos2dx首先從程序入口main函數開始main函數int APIENTRY _tWinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,int nCmdShow) {UNREFERENCED_PARAMETER(h…

[原創]Android中的android:layout_width和android:width的區別

在android系統中&#xff0c;我們可以通過在xml資源文件中定義布局&#xff0c;一般的寫法是&#xff1a; <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"ma…

【C++基礎】模板參數與模板繼承

模板參數 默認類型參數 函數參數可以設定一個默認值&#xff0c;我們現在可以對類模板的類型參數設定一個默認類型。 指定泛型Stack的默認類型參數為 int template<typename T int> class Stack{... };當我們這樣定義一個對象時&#xff1a; Stack<> stack;使…

UNIX標準化及實現之POSIX標準可選頭文件

POSIX標準定義的可選頭文件 頭文件說明<aio.h>異步I/O<mqueue.h>消息隊列<pthread.h>線程<sched.h>執行調度<semaphore.h>信號量<spawn.h>實時spawn接口<stropts.h>XSI STREAMS接口<trace.h>事件跟蹤轉載于:https://www.cnblo…

Julia中的denominator()函數

Julia| 分母()函數 (Julia | denominator() function) denominator() function is a library function in Julia programming language, it is used to get the denominator of the rational representation of the given value. denominator()函數是Julia編程語言中的庫函數&a…

【C++基礎】STL迭代器

已知&#xff1a; STL組成部分&#xff1a; 容器、迭代器、算法、函數對象、空間分配器 容器&#xff1a;用于保存一組數據&#xff0c;數據個體被稱為元素 迭代器&#xff1a;用于遍歷容器中的元素&#xff0c;容器都有自己專屬的迭代器&#xff0c;只有容器才知道如何遍歷自己…

用ie9瀏覽器若出現看視頻有聲音沒圖像的問題處理

當我們在用ie9瀏覽器上網想看視頻時&#xff0c;有時會遇到各種問題&#xff0c;尤其是有關聲音和圖像的。有時候有聲音沒圖像&#xff0c;但有時候有圖像卻沒聲音。各種問題。當遇到某些問題時&#xff0c;只要是關于網頁視頻的&#xff0c;一般都會選擇更新網頁視頻播放插件&…

java架構師之路:JAVA程序員必看的15本書的電子版下載地址

java架構師之路&#xff1a;JAVA程序員必看的15本書的電子版下載地址 作為Java程序員來說&#xff0c;最痛苦的事情莫過于可以選擇的范圍太廣&#xff0c;可以讀的書太多&#xff0c;往往容易無所適從。我想就我自己讀過的技術書籍中挑選出來一些&#xff0c;按照學習的先后順序…

office數據集dslr_DSLR的完整形式是什么?

office數據集dslrDSLR&#xff1a;數碼單鏡反光 (DSLR: Digital Single-Lens Reflex) DSLR is an abbreviation of digital single-lens reflex. It alludes to a digital camera which with the sensor of digital imaging merges optics and mechanism of single-lens reflex…

envs\TensorFlow2.0\lib\site-packages\tensorflow\python\framework\dtypes.py:516: FutureWarning 解決方案

import tensorflow后的完整報錯&#xff1a; D:\Anaconda3\envs\TensorFlow2.0\lib\site-packages\tensorflow\python\framework\dtypes.py:516: FutureWarning: Passing (type, 1) or ‘1type’ as a synonym of type is deprecated; in a future version of numpy, it will b…

轉義序列

轉義序列描述\n換行符\r回車\t水平制表符\\反斜杠\$美元符\"雙引號\[0-7]{1.3}八進制記法\x[0-9A-Fa-f]{1,2}十六進制記法轉載于:https://www.cnblogs.com/cindylu520/archive/2012/07/05/2577246.html

Java動態代理模擬spring的AOP

廣州瘋狂軟件學院擁有三大課程體系包括&#xff1a;java課程&#xff0c;android課程&#xff0c;ios課程&#xff0c;瘋狂軟件年終鉅惠&#xff0c;報名java就業班&#xff0c;免費贈送基礎班&#xff0c;名額有限&#xff0c;本月火熱報名中&#xff0c;歡迎有志之士電話或者…

xlrd.biffh.XLRDError: Excel xlsx file; not supported解決方法

將原本的xlrd卸載&#xff0c;安裝舊版本&#xff1a; pip uninstall xlrd pip install xlrd1.2.0轉自&#xff1a;https://www.cnblogs.com/xiaoqiangink/p/14144517.html

生產消費是什么設計模式_快速消費品的完整形式是什么?

生產消費是什么設計模式快消品&#xff1a;快速消費品 (FMCG: Fast-Moving Consumer Goods) FMCG is an abbreviation of Fast-Moving Consumer Goods which are also known as Consumer Packed Goods (CPG). These consumer packed goods allude to the products that are sol…

分類釋義概述

分類(classification) 是人工智能領域基本的研究領域之一&#xff0c;也是知識表示和獲取的主要途徑之一。一般認為&#xff0c;分類屬于科學發展的較初級階段&#xff0c;即形成理論之前的階段。 分類的釋義&#xff1a; 中文解釋&#xff1a;分類指的是將無規律的事物按照其性…