Classe utilizadas para transferir dados entre camadas, serviços, processos, etc. Utilizado para abstrair e simplificar os dados que serão enviados.
Ex:
Table User:
Table Car:
Utilizando como exemplo um frontend em que o usuário interage a partir de HTML, quando ele quiser retornar os dados, não é necessário retornar o User.Password nem Car.Price. Usuário quer apenas saber qual o modelo de carro, Car.Model, está atrelado com o User.Username.
UserDTO:
class User:
def __init__(self, id, username, password):
self.id = id
self.username = username
self.password = password
# Outros métodos...
# Getter e setters são implícitos, vamos imaginar que eles existem e estão funcionando
class Car:
def __init__(self, model, price):
self.model = model
self.price = price
# Outros métodos...
# Getter e setters são implícitos, vamos imaginar que eles existem e estão funcionando
class UserDTO:
def __init__(self, model: Car, username: User):
self.model = model
self.username = username
user1 = User(1, "User", "password")
car1 = Car("Subaru", "50000")
user_dto = UserDTO(car1.model, user1.username)
Um DTO, para que seja lightweight, não deve implementar métodos, realizar cálculos e similares. A utilização dele é apenas para ser uma caixa ou contâiner para transferir valores.
Esta é uma das formas de se implementar DTO. Segundo vglushko, esta implementação não oferece imutabilidade e mais alguns pontos importantes. Desta forma podemos implementar DTO de outras formas, utilizando as seguintes classes:
Esta página está sendo atualizada. Irei inserir os códigos utilizando as outras bibliotecas e classes Python. Pretendo também fazer exemplos para Java.
Também preciso arrumar esse CSS que tá bem porco.
Links: