Interface; Data Transfer Object, Business Object
kotlin swift
DataTransferObject, Business Object
DTO does not have any behavior except for storage, retrieval, serialization and deserialization of its own data (mutators, accessors, serializers and parsers).
A business object is an entity within a multi-tiered software application that works in conjunction with the data access and business logic layers to transport data.
Interface
Kotlin 에서 데이터를 표현하고 전달하기 위해서 data class 를 주로 사용한다. 일반적으로 Data transfer object (DTO) 목적으로 사용된다. 즉, DTO 목적으로 사용되는 data class 내에는 비지니스 로직이 존재하면 안된다.
반면 DomainModel 을 표현할 때, interface 를 사용할 수 있다.
interface Account {
val account: String
val balance: BigDecimal
val owner: String
fun calculateInterest(): BigDecimal
}
Interface 는 아래 기준을 두고 사용할 수 있다.
- 객체의 행동 또는 역할을 정의할 때 사용한다.
- interface 는 기본적으로 구현을 강제하는 계약이다. 따라서 데이터 저장뿐 아니라, 동작(메서드)과 특성이 구현마다 달라질 수 있을 때 사용한다.
- 추상화와 확장성을 위해서 사용한다.
- 데이터 외에도 특정 비즈니스 동작을 추가로 정의하는 역할로 사용한다.
- 여러 서비스나 레이어에서 사용하고, 다른 데이터 소스나 도메인 요구사항에 맞게 확장하고 싶을 때 사용한다.