Java Transfer Object Pattern(傳輸對象模式)

傳輸對象模式(Transfer Object Pattern)用于從客戶端向服務(wù)器一次性傳遞帶有多個(gè)屬性的數(shù)據(jù)。傳輸對象也被稱為數(shù)值對象戒财。傳輸對象是一個(gè)具有 getter/setter 方法的簡單的 POJO 類蜡饵,它是可序列化的披诗,所以它可以通過網(wǎng)絡(luò)傳輸拨匆。它沒有任何的行為库菲。服務(wù)器端的業(yè)務(wù)類通常從數(shù)據(jù)庫讀取數(shù)據(jù)整袁,然后填充 POJO菠齿,并把它發(fā)送到客戶端或按值傳遞它。對于客戶端坐昙,傳輸對象是只讀的绳匀。客戶端可以創(chuàng)建自己的傳輸對象民珍,并把它傳遞給服務(wù)器襟士,以便一次性更新數(shù)據(jù)庫中的數(shù)值。以下是這種設(shè)計(jì)模式的實(shí)體嚷量。

  • 業(yè)務(wù)對象(Business Object) - 為傳輸對象填充數(shù)據(jù)的業(yè)務(wù)服務(wù)陋桂。
  • 傳輸對象(Transfer Object) - 簡單的 POJO,只有設(shè)置/獲取屬性的方法蝶溶。
  • 客戶端(Client) - 客戶端可以發(fā)送請求或者發(fā)送傳輸對象到業(yè)務(wù)對象嗜历。
  1. 創(chuàng)建傳輸對象宣渗。
/**
 * 1. 創(chuàng)建傳輸對象。
 * @author mazaiting
 */
public class StudentVO {
    private String name;
    private int rollNo;
    public StudentVO(String name, int rollNo) {
        this.name = name;
        this.rollNo = rollNo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getRollNo() {
        return rollNo;
    }
    public void setRollNo(int rollNo) {
        this.rollNo = rollNo;
    }   
}
  1. 創(chuàng)建業(yè)務(wù)對象梨州。
/**
 * 2. 創(chuàng)建業(yè)務(wù)對象痕囱。
 * @author mazaiting
 */
public class StudentBO {
    
    // 列表當(dāng)做數(shù)據(jù)庫
    List<StudentVO> students;
    
    public StudentBO() {
        students = new ArrayList<StudentVO>();
        StudentVO student1 = new StudentVO("Robert", 0);
        StudentVO student2 = new StudentVO("John", 1);
        students.add(student1);
        students.add(student2);     
    }
    
    public void deleteStudent(StudentVO student){
        students.remove(student.getRollNo());
        System.out.println("Student: Roll No " 
                  + student.getRollNo() +", deleted from database");
    }
    
    public List<StudentVO> getAllStudents() {
        return students;
    }
    
    public StudentVO getStudent(int rollNo){
        return students.get(rollNo);
    }
    
    public void updateStudent(StudentVO student){
        students.get(student.getRollNo()).setName(student.getName());
        System.out.println("Student: Roll No " 
                  + student.getRollNo() +", updated in the database");
    }
    
}
  1. 使用 StudentBO 來演示傳輸對象設(shè)計(jì)模式。
/**
 * 3. 使用 StudentBO 來演示傳輸對象設(shè)計(jì)模式暴匠。
 * @author mazaiting
 */
public class Client {
    public static void main(String[] args) {
        StudentBO studentBusinessObject = new StudentBO();
        
        // 輸出所有的學(xué)生
        for (StudentVO student : studentBusinessObject.getAllStudents()) {
            System.out.println("Student: [RollNo : "
                     +student.getRollNo()+", Name : "+student.getName()+" ]");
        }
        
        // 更新學(xué)生
        StudentVO student = studentBusinessObject.getAllStudents().get(0);
        student.setName("Michael");
        studentBusinessObject.updateStudent(student);
        
        // 獲取學(xué)生
        studentBusinessObject.getStudent(0);
        System.out.println("Student: [RollNo : "
                  +student.getRollNo()+", Name : "+student.getName()+" ]");
        
    }
}
  1. 打印結(jié)果
Student: [RollNo : 0, Name : Robert ]
Student: [RollNo : 1, Name : John ]
Student: Roll No 0, updated in the database
Student: [RollNo : 0, Name : Michael ]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鞍恢,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子每窖,更是在濱河造成了極大的恐慌帮掉,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窒典,死亡現(xiàn)場離奇詭異蟆炊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)瀑志,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門涩搓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人劈猪,你說我怎么就攤上這事昧甘。” “怎么了战得?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵疾层,是天一觀的道長。 經(jīng)常有香客問我贡避,道長,這世上最難降的妖魔是什么予弧? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任刮吧,我火速辦了婚禮,結(jié)果婚禮上掖蛤,老公的妹妹穿的比我還像新娘杀捻。我一直安慰自己,他們只是感情好蚓庭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布致讥。 她就那樣靜靜地躺著,像睡著了一般器赞。 火紅的嫁衣襯著肌膚如雪垢袱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天港柜,我揣著相機(jī)與錄音请契,去河邊找鬼咳榜。 笑死,一個(gè)胖子當(dāng)著我的面吹牛爽锥,可吹牛的內(nèi)容都是我干的涌韩。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼氯夷,長吁一口氣:“原來是場噩夢啊……” “哼臣樱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起腮考,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤雇毫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后秸仙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嘴拢,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年寂纪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了席吴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡捞蛋,死狀恐怖孝冒,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情拟杉,我是刑警寧澤庄涡,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站搬设,受9級特大地震影響穴店,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拿穴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一泣洞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧默色,春花似錦球凰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至吃度,卻和暖如春甩挫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背椿每。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工捶闸, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夜畴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓删壮,卻偏偏與公主長得像贪绘,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子央碟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容