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 | × | ○ | ○ | × |
以上です、ありがとうございました
参考資料
- Difference between DTO, VO, POJO, JavaBeans?
- 【JavaBeans】BeanとDTOとEntityとVOとFormの違いって何?
- JavaBean, POJO, VO, DTO, DAO @JKNB
- エンティティをインタフェースではなくPOJOに
- DTO vs Value Object vs POCO(図あり、要約がわかりやすい)
- Entity vs Value Object: the ultimate list of differences(Entity と ValueObjectの違いわかりやすい)
参考になりました。
ありがとうございます