色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

鍵值對在架構(gòu)設(shè)計(jì)里的應(yīng)用

  1. 談?wù)勎覍Τ绦虻睦斫?/strong>

  作為程序員你對程序是如何理解的?寫這篇文章的時(shí)候,我認(rèn)真思考了下,發(fā)現(xiàn)我對程序的理解不是和教科書一樣的,我每次聽到程序二字我想到的只有兩個(gè)東西:代碼和數(shù)據(jù),而每次寫程序的時(shí)候也就是寫代碼操作數(shù)據(jù)的過程。

  做程序開發(fā)和做菜很像,數(shù)據(jù)就是食材,代碼就是廚藝,做出的軟件就是一道菜了,至于這個(gè)菜好不好吃,到底是看食材還是看廚藝了?呵呵,當(dāng)我拋出這個(gè)問題的時(shí)候,我的第一反應(yīng)是菜不好吃當(dāng)然是手藝不好了,不知道其他童鞋是不是這么想的。認(rèn)真想下,一道好菜一般都是二者必須兼?zhèn)洌?dāng)然不排除某一項(xiàng)突出也可以達(dá)到同樣的效果,但這種情況畢竟不是大眾化,而是屬于少數(shù)精英的,做軟件也是如此,代碼與數(shù)據(jù)是不可偏廢的。這里我要提的是數(shù)據(jù)。

  根據(jù)我的經(jīng)驗(yàn)和知識(分類標(biāo)準(zhǔn)我一直想不太好,所以說是自己的經(jīng)驗(yàn)和知識),我把數(shù)據(jù)分為兩類:落地?cái)?shù)據(jù)和不落地?cái)?shù)據(jù)。

  1. 落地?cái)?shù)據(jù):就是被持久化的數(shù)據(jù),這種數(shù)據(jù)一般放在硬盤或是其他的持久化存儲設(shè)備里,例如:圖片、系統(tǒng)日志、在頁面上顯示的數(shù)據(jù)以及保存在關(guān)系數(shù)據(jù)庫里的數(shù)據(jù)等等,落地?cái)?shù)據(jù)一定會有一個(gè)固定的載體,他們不會瞬時(shí)消失的。
  2. 不落地?cái)?shù)據(jù):一般指存儲在內(nèi)存或者是網(wǎng)絡(luò)傳輸里的數(shù)據(jù),這些數(shù)據(jù)是瞬時(shí),使用完畢就會消失,例如:我們在瀏覽器發(fā)送給服務(wù)器的請求;從數(shù)據(jù)庫讀取出來的一直到頁面展示前的數(shù)據(jù)等等。

  寫過程序的人都知道,程序里對這兩種類型數(shù)據(jù)操作是有很大的不同的。

  2. 由Java EE的MVC設(shè)計(jì)模式談起

  Java一個(gè)很重要的貢獻(xiàn)就是推出了MVC設(shè)計(jì)模式,MVC其實(shí)應(yīng)該按VCM順序讀最好。V及View,主要是前臺展示的頁面;C及Controller,控制層主要作用是接受前臺頁面數(shù)據(jù),根據(jù)數(shù)據(jù)的不同調(diào)用后臺不同的業(yè)務(wù)模型,同時(shí)業(yè)務(wù)模型處理好的數(shù)據(jù)也要發(fā)送到Controller,Controller再分配給相應(yīng)的前臺頁面;M及Model,模型層專門負(fù)責(zé)操作業(yè)務(wù)模型。下圖很好的表達(dá)了MVC的理念:

  隨著MVC模式的發(fā)展,現(xiàn)在流行的架構(gòu):View(視圖層)+ Controller(也叫Action,控制層)+ Service(業(yè)務(wù)模型層)+ DAO(數(shù)據(jù)訪問對象層)+ 數(shù)據(jù)庫的多層結(jié)構(gòu),如下圖:

  紅線是用戶的請求;藍(lán)線是服務(wù)器應(yīng)用戶的請求。紅色和藍(lán)線也代表各層數(shù)據(jù)傳輸?shù)牧飨颉?/p>

  不管是傳統(tǒng)的MVC模式還是現(xiàn)在流行的多層架構(gòu),各個(gè)邏輯層傳輸?shù)臄?shù)據(jù)都是不落地?cái)?shù)據(jù)。

  在Java項(xiàng)目里,一般我們都是傳輸JavaBean,而這些JavaBean都是程序員根據(jù)實(shí)際業(yè)務(wù)需求自己定義的,例如下面一個(gè)典型的JavaBean:

public class User {    
private String name = "";
private String sex = "";
private String age = "";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}

it知識庫鍵值對在架構(gòu)設(shè)計(jì)里的應(yīng)用,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 闸北区| 珠海市| 阿巴嘎旗| 麻栗坡县| 兴安县| 沙雅县| 枞阳县| 资源县| 卢湾区| 红桥区| 大兴区| 新沂市| 宝坻区| 辉南县| 民和| 湟中县| 沛县| 维西| 清徐县| 嵊泗县| 苍溪县| 丹寨县| 育儿| 海兴县| 新营市| 阿尔山市| 利辛县| 林州市| 湘阴县| 光泽县| 桦甸市| 迭部县| 琼海市| 常宁市| 体育| 荥阳市| 盐源县| 隆林| 忻州市| 中方县| 江门市|