#iOS POSOってなに?似ているValue Object・Entity・DTOと比べてみました


What is POSO ?

Plain Old Swift Object

try! Swift2017、 Mr.Jon Bott によるLTで取り上げられました
下記のSwift版に当たるでしょう

  • POCO -- Plain Old CLR Objectの略
  • POJO -- Plain Old Java Objectの略

似ているオブジェクトとの違い

他言語を参考に以下のオブジェクトとの違いを比べてみました

  • Value Object
  • Entity
  • DTO
  • DAO

Value ObjectとEntity

  • Getterのみ
  • ロジックを持つ
  • 値は不変(immutable)
  • DTOと同義とされることが多い
  • Entityにはアイデンティティがあり、VOにはない
  • コンストラクタのみで生成可能
  • 一般的には、レイヤー間の境界線上で持ち越される(DTO)には使われない

DTO

  • Getter / Setter
  • ロジックを持たない
  • VOと同義とされることが多い
  • Layer間のオブジェクトの受け渡しなどに使われる

DAO

  • デザインパターンの一種
  • 永続レイヤーからのオブジェクトアクセスのメカニズムを提供する

まとめ

参考資料によって、いろいろな見解はあるものの、以下のようにまとまりそうです

Object Logic Getter Setter Identity
POSO
Value Object × ×
Entity ×
DTO × ×

以上です、ありがとうございました

参考資料

参考になりました。
ありがとうございます