1. 程式人生 > >再看外觀和B層

再看外觀和B層

     機房重構時候,用到了外觀,但是在用外觀的時候基本上業務邏輯層沒有在體現出它本身的功能,而是將
 業務邏輯基本轉移到了外觀層中,也沒想太多直接就那麼敲完了重構;不過在合作的時候我們達成了一致,讓
 外觀發揮外觀的功能,B層發揮業務邏輯的功能,在此之前需要弄清楚以下兩個概念:
   一、什麼是外觀?
     在設計模式中我們學習過外觀模式,都知道外觀是為子系統中的一組介面提供一個一致的介面,很多人也
   見過下面的圖片
     這張圖生動形象的表明了外觀的作用,可以為U層提供很清楚的介面,非常方便
     但是我們在具體做機房的時候會無意識的把外觀的作用曲解,我們先接著往下看
  二、業務邏輯層(B層
)
     什麼是業務邏輯?業務邏輯是對資料業務邏輯的處理;乍一聽是對業務的邏輯,但具體是什麼呢?
     業務邏輯的內容包括一下幾方面:
1.領域實體:業務中的物件,包括屬性和行為;
2.業務規則:規定完成一個動作需要滿足的條件;
3.資料完整性:一些必不可少的資料;
4.工作流:實體之間的互動關係;
     看起來還是很模糊的概念,不太明白,舉個例子說,就那機房登入來說吧
1.領域實體:使用者名稱,密碼
2.業務規則:點選登入會登陸系統,但必須在使用者名稱和密碼都輸入正確的情況下才能登入進入系統
3.資料完整性:使用者登入需要有登入的使用者名稱和密碼,沒有則不能登入系統
4.工作流:輸入正確帳號密碼—>點選登入—>提示成功—>進入系統
     這才算是業務邏輯層,而我們寫的業務邏輯層是什麼?只是返回一個值,完全被我們架空了
  三、轉移
     重構的時候我們外觀似乎是發揮了業務邏輯層的作用,資料完整性,業務規則體現的淋淋盡致,還有不可
   或缺的工作流,現在已經意識到這個問題的存在,接下來就是要解決這個問題,轉移,讓他們各自發揮自己
   的責任
     外觀:是對B層一些類進行彙集,為U層提供一個清除的介面,讓U層和B層更好的解耦
     B層:把本該屬於B層的業務邏輯從外觀拿回來,充分發揮B層的作用
     敬請期待下一篇關於具體解決業務邏輯轉移的問題
  小結:團隊合作中大家會有很多不一致的想法,當我們在表達自己的觀點或是在聽別人的觀點的時候是一個
        很好學習的過程,通過我們思想的交流和碰撞,對知識的理解更加深刻

相關推薦

外觀B

機房重構時候,用到了外觀,但是在用外觀的時候基本上業務邏輯層沒有在體現出它本身的功能,而是將 業務邏輯基本轉移到了外觀層中,也沒想太多直接就那麼敲完了重構;不過在合作的時候我們達成了一致,

機房重構外觀模式

在機房重構的剛開始過程中,我對於每一個功能都建立了一個外觀層,所以剛開始我感覺外觀怎麼沒有起到應起的作用呢,只是簡單地降低了U層和B層之間的耦合,用於傳遞引數,把UI層的引數傳遞給外觀,然後再有外觀層把引數傳遞給B層,後來跟小胖交流,才發現還是沒有理解外觀模式的

【機房收費系統合作版】——外觀模式

前言:這次合作版機房,在小夥伴們的商量下,決定使用外觀模式。由於個人版的時候,因為各種原因,未能使用這一模式。現在,藉著這次機會,重新認識一下這位故友。 我們先看下邊的一張圖:     這張圖

怎麼innodb的B+TREE數?

怎麼看innodb的B+TREE層數?,下面以sysbench_testdata.sbtest2為例檢視索引層數: - 檢視相關係統 [email protected] [sysbench_testdata]>show create table sbtest2; | sbtest2 | CR

B樹(或B-樹)B+樹B*樹(不後悔,一必懂)

樹的深度過大而造成磁碟I/O讀寫過於頻繁,進而導致查詢效率低下 根據平衡二叉樹的啟發,自然就想到平衡多路查詢樹結構,即B樹結構(後面,我們將看到,B樹的各種操作能使B樹保持較低的高度,從而達到有效避免磁碟過於頻繁的查詢存取操作,從而有效提高查詢效率)。 為什麼說B+tre

C/SB/S以及三結構

兩層(客戶機<->伺服器) C / S(Client / Server)結構 客戶機和伺服器結構 充分利用硬體環境的優勢 合理分配任務 降低系統開銷 缺點 不同的作業系統需要不同版本的軟體 產品更新換代速度快,很難適應大型區域網使用者的同時使

lua協同程式的lua_yield、coroutine.yield、lua_resume的應用

#include <stdio.h> #include <lua.hpp> #include <lualib.h> #include <lauxlib.h> static int Stop(lua_State* L); lua_State*

簡單區分軟體開發中幾個概念:C/S結構B/S結構、三結構結構、MVC架構

C/S——客戶端/服務端,簡單講就是客戶端電腦上需要安裝專有的軟體來更伺服器交流,就像QQ。主要通過訊息的機制傳遞(當然也可以自己寫協議,遊戲就是這樣做的。) B/S——瀏覽器/服務端,你只要有瀏覽器就可以與伺服器進行通訊,不用再安裝專門的客戶端,通訊協議使用HTTP協議.

包含、擴充套件泛化、繼承

    我們知道包含和擴充套件是用例圖中所特有的關係,而泛化和繼承則不僅用於用例圖,同時也適用於其他圖,如類圖。這兩對概念相信對於學習面向物件中的我們來說是很容易混淆的,很多時候自己都不知道包含和擴充

rabbitmq的交換器佇列的關係

最近又要用到rabbitmq,業務上要求伺服器只發一次訊息,需要多個客戶端都去單獨消費。但我們知道rabbitmq的機制裡,每個佇列裡的訊息只能消費一次,所以客戶端要單獨消費資訊,就必須得每個客戶端單獨監聽一個queue。所以我最終想實現的是服務端只宣告exchange,客戶端來建立queue和繫結excha

從硬體級別可見性有序性

  前言 王子之前的文章對於併發程式設計中的可見性問題已經有了一個初步的介紹,總結出來就是CPU的快取會導致可見性問題。 這樣的解釋其實是沒有問題的,但這裡說的“快取”其實一個籠統的概念,快取其實指的是暫存器、快取記憶體和寫緩衝器。 今天我們就從硬體的級別再來探索一下出現可見性問題的原因,讓小夥伴們

vxlan vs GRE(三組播組播如何對應起來)

由器 ams 之間 數據信息 控制 格式 tunnel network 處理 www.huawei.com/ilink/cnenterprise/download/HW_401028 http://feisky.xyz/sdn/basic/vxlan.html 華為的v

【Cocos2d-x】坐標系

pac 多說 pan art world 地圖 分辨 play instance 在Cocos2D-X中,存在四種坐標系: 1、OpenGL坐標系:該坐標系原點在屏幕左下角。x軸向右,y軸向上。這也就是cocos2dx中用到的坐標系所以沒啥好說的。 2、屏幕坐標系(UI

Linux 網卡驅動學習(六)(應用、tcp 、ip 、設備驅動作用解析)

local acc 每次 letter auto sizeof style article inode 本文將介紹網絡連接建立的過程、收發包流程,以及當中應用層、tcp層、ip層、設備層和驅動層各層發揮的作用。 1、應用層 對於使用socket進行網絡連接的serv

數據庫——(1)存儲過程

靈活 技術分享 ted pop 能夠 數據庫對象 順序 記錄 爸爸 當我們運行一個比較簡單的操作時,一般都是用SQL語句。可是當邏輯越來越復雜時,只使用順序運行的SQL語句序列表現出非常大的局限性。這時,就能夠考慮用還有一種方法了。那就是存儲過程。

數據庫——(6)連接

style 連接 post 匹配 兩個 rom data- span 笛卡爾積 簡單介紹: 連接是多表查詢的基礎。 因為關系數據庫不包括指針或其它關聯記錄與記錄的機制,連接成為了生成跨表數據關系的唯一機制。這也就是要用連接的原因。 分類: 1、內連接 使用

Glide實現查圖片保存圖片到手機

查看圖片 otf asynctask tlist bitmap ready env pic blank 兩種方式, 推薦方式一 方式一 downloadOnly 創建一個 ImageActivity public class ImageActivity exte

ZooKeeper(先mark

tails 再看 article log html sdn art tail detail http://blog.csdn.net/tswisdom/article/details/41522069 http://www.cnblogs.com/wuxl360/p/581

Linux查CPU內存使用情況

linux 內存 top 在系統維護的過程中,隨時可能有需要查看 CPU 使用率,並根據相應信息分析系統狀況的需要。在 CentOS 中,可以通過 top 命令來查看 CPU 使用狀況。運行 top 命令後,CPU 使用狀態會以全屏的方式顯示,並且會處在對話的模式 -- 用基於 top 的命令,可