传输对象模式

基本介绍

1.用于从客户端向服务器一次性传递带有多个属性的数据

2.角色

(1)Business Object:业务对象,通常从数据库读取数据,为 Transfer Object 填充数据的业务服务,并把它发送到 Client 或按值传递它

(2)Transfer Object:传输对象,普通 JavaBeans 类,它是可序列化的,所以它可以通过网络传输,它没有任何的行为,只有 getter / setter 方法

(3)Client:客户端,可以发送请求或者发送 Transfer Object 到 Business Object,Transfer Object 是只读的,Client 可以创建自己的 Transfer Object,并把它传递给服务器,以便一次性更新数据库中的数值

 

代码示例

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

public class Client {//客户端

    public static void main(String[] args) {
        BusinessObject businessObject = new BusinessObject();
        print(businessObject);
        businessObject.updateTransferObject(0, "King");
        print(businessObject);
        businessObject.deleteTransferObject(0);
        print(businessObject);
    }

    public static void print(BusinessObject businessObject) {
        for (TransferObject transferObject : businessObject.getAllTransferObjects()) {
            System.out.println(transferObject.toString());
        }
    }
}

class TransferObject implements Serializable {
    private String name;
    private int id;

    TransferObject(String name, int id) {
        this.name = name;
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    @Override
    public String toString() {
        return "TransferObject{" +
                "name='" + name + '\'' +
                ", id=" + id +
                '}';
    }
}

class BusinessObject implements Serializable {
    List<TransferObject> transferObjects = new ArrayList<TransferObject>();//模拟数据库

    public BusinessObject() {
        transferObjects.add(new TransferObject("Robert", 0));
        transferObjects.add(new TransferObject("John", 1));
    }

    public void deleteTransferObject(int index) {
        System.out.println("TransferObject:Id " + transferObjects.get(index).getId() + " deleted from database");
        transferObjects.remove(index);
    }

    public List<TransferObject> getAllTransferObjects() {
        return transferObjects;
    }

    public TransferObject getTransferObject(int index) {
        return transferObjects.get(index);
    }

    public void updateTransferObject(int index, String name) {
        transferObjects.get(index).setName(name);
        System.out.println("TransferObject:Id " + transferObjects.get(index).getId() + " update in database");
    }
}

 

posted @   半条咸鱼  阅读(94)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示