在我工作的地方,我们已经多次在这个问题上来回走动,正在寻找一个健全性检查.这是一个问题:Business Objects应该是数据容器(更像是DTO)还是应该包含可以对该对象执行某些功能的逻辑.
示例 - 获取客户对象,它可能包含一些常见属性(Name,Id等),客户对象是否还包含函数(Save,Calc等)?
一行推理说,将对象与功能(单一责任主体)分开,并将功能放在业务逻辑层或对象中.
另一条推理说,不,如果我有一个客户对象,我只想打电话给Customer.Save并完成它.如果我正在使用该对象,为什么我需要知道如何保存客户?
我们的最后两个项目已经将对象与功能分开,但是在新项目中再次提出了争论.哪个更有意义?
编辑
这些结果与我们的辩论非常相似.对一方或另一方的一票完全改变了方向.有没有人想加2美分?
编辑
尽管答案抽样很小,但似乎大多数人认为业务对象中的功能是可接受的,只要它很简单,但持久性最好放在单独的类/层中.我们试一试.感谢大家的投入......
假设:可以访问file://的本地HTML/Javascript网页
在可拖动HTML元素的拖动开始时,在事件处理函数中dragStart(e),如何添加File对象以使其被识别为文件并最终在dataTransfer.files列表中?
例如:
function dragStart(e){
var file = getSomeFileObjFromSomewhere();
e.originalEvent.dataTransfer.effectAllowed = "all";
e.originalEvent.dataTransfer.setData("file", file);
console.log("\nFiles:");
i = 0;
var files = e.originalEvent.dataTransfer.files,
len = files.length;
for (; i < len; i++) {
console.log("\nIndex: " + i + "\nFilename: " + files[i].name);
console.log("Type: " + files[i].type);
console.log("Size: " + files[i].size + " bytes");
console.dir(files[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
具体来说,它需要在Chrome/Chromium上运行.并且,我们可以假设该文件存在于本地驱动器上.基本上,当文件从Windows资源管理器拖动到可放置元素的HTML页面时,我想要相同的数据.
我知道这存在于Chrome中:
e.originalEvent.dataTransfer.setData("DownloadURL", fileType + ":" + name + ":" + filePath);
Run Code Online (Sandbox Code Playgroud)
下载文件.但这不是我想要的,因为我想假设这是一个现有文件,并且必须访问原始文件.
javascript drag-and-drop data-transfer file data-transfer-objects
数据传输对象与值对象相同还是不同?如果它们不同,那么我们应该在哪里使用DTO?我们应该在哪里使用VO?
我们谈论的编程语言是Java,上下文是 - 有一个Web应用程序,它从数据库中获取数据然后处理它,最终处理后的信息显示在前端
java design-patterns web-applications data-transfer-objects value-objects
在哪种情况下我可以在n层架构中使用这些设计模式?
我使用 Vuejs 和 DataTransfer 异步上传文件,并且我希望允许拖放多个文件一次上传。
我可以进行第一次上传,但是在上传完成时,Javascript 已经垃圾收集或更改了 DataTransfer 项目对象。
我怎样才能重新设计这个(或克隆事件/DataTransfer 对象),以便在整个 ajax 调用过程中我仍然可以使用数据?
我已经遵循了关于如何使用 DataTransfer 的 MDN 文档,但我很难将它应用于我的特定案例。我也试过复制事件对象,正如你在我的代码中看到的那样,但它显然没有做深复制,只是传递了引用,这没有帮助。
methods: {
dropHandler: function (event) {
if (event.dataTransfer.items) {
let i = 0;
let self = this;
let ev = event;
function uploadHandler() {
let items = ev.dataTransfer.items;
let len = items.length;
// len NOW EQUALS 4
console.log("LEN: ", len);
if (items[i].kind === 'file') {
var file = items[i].getAsFile();
$('#id_file_name').val(file.name);
var file_form = $('#fileform2').get(0);
var form_data = new FormData(file_form);
if (form_data) { …Run Code Online (Sandbox Code Playgroud) 我有以下域模型:
public class Playlist
{
public long Id { get; set; }
public string Title { get; set; }
public virtual ICollection<Song> Songs { get; set; }
}
public class Song
{
public long Id { get; set; }
public string Name { get; set; }
public virtual Playlist Playlist { get; set; }
public virtual ICollection<Catalog> Matches { get; set; }
}
public class Catalog
{
public long Id { get; set; }
public string Title { get; set; …Run Code Online (Sandbox Code Playgroud) design-patterns domain-driven-design data-transfer-objects ddd-repositories asp.net-mvc-3
我正在努力解决一个问题。我正在关注 NestJS 的文档。NodeJS 的后端框架。该文档提到了 DTO(数据传输对象)。我创建了一个用于创建用户的 DTO:
export class CreateUserDto {
readonly email: string;
readonly password: string;
}
Run Code Online (Sandbox Code Playgroud)
与此结合:
@Post('create')
createUser(@Body() userData: CreateUserDto): User {
return this.usersService.createUser(userData);
}
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我可以使用任何类型的主体向这条路线发出 post 请求。我可以在正文中放置任何类型的信息而不会出错。这种 DTO 的全部意义在于只允许身体中的某些信息,对吗?我还尝试了导出接口 CreateUserDTO,而不是使用导出类 CreateUserDTO,但这也不起作用。我也是 typescript 和 NestJS 的新手。有没有人能够解释为什么它没有按我预期的方式工作,或者这种数据传输对象的目的是什么?
我一直在使用EntityFramework查看很多WCF示例,其中大多数似乎都会向客户端返回某种POCO或DTO类.
我想知道为什么这是因为默认EntityObject包括[DataContract]属性和实现INotifyPropertyChanged.返回DTO或POCO课程比EntityObject(或反之亦然)更好吗?是否有特定的情况,最好使用一个返回值而不是另一个?
这可能是一个非常主观的问题,但我想知道一些更多的意见.我用Spring MVC构建了一个Rest API服务,并实现了DTO-Domain-Entity模式.我想知道你对在DTO中实现Builder模式有什么看法,比如说
public class UserResponseDTO
extends AbstractResponseDTO {
private String username;
private Boolean enabled;
public UserResponseDTO(String username, Boolean enabled) {
this.username = username;
this.enabled = enabled;
}
public String getUsername() {
return this.username;
}
public Boolean getEnabled() {
return this.enabled;
}
public static class Builder {
private String username;
private Boolean enabled;
public void setUsername(String username) {
this.username = username;
}
public void setEnabled(Boolean enabled) {
this.enabled = enabled;
}
public UserResponseDTO build(){
return new UserResponseDTO(username, enabled); …Run Code Online (Sandbox Code Playgroud) java design-patterns data-transfer-objects dto builder-pattern
对于未来的项目,我决定使用dto将数据传递到域层.这也是我进行大部分数据验证的地方.
我应该在哪里放置数据格式?
1)在DTO中,当它准备好发送到域层时,
或者
2)在它被持久化之前的基础设施层中?
或
3)其他地方:)
ie:需要在持久化之前加密的密码,或者在存储之前需要转换,重新调整等的图像.
我希望将所有数据格式保存在一个层中,不要喜欢它在整个地方进行编码.
换句话说:数据是否应该为域准备处理它,或者域应该获取原始数据并在域处理后更改它?