1. read-Only 특징(사용하는 도중에 변경 불가능하며 오직 읽기만 가능)을 가집니다.
2. DTO와 유사하지만 DTO는 setter를 가지고 있어 값이 변할 수 있습니다.
서로 다른 이름을 갖는 VO 인스턴스라도 모든 속성 값이 같다면 두 인스턴스는 같은 객체인 것이 핵심이다.
특정 값 자체를 표현하기 때문에 불변성 보장을 위해 생성자를 사용해야 한다.
예시)
//생성자를 이용한 불변 객체
public class CarVO {
private final String color;
public CarVO(String color) {
this.color = color;
}
}
그렇기 때문에 두 객체의 주솟값이 다르다.
이 때문에 값 만 비교하기 위해서 equals()와 hashCode()를 오버 라이딩(재정의) 해주어야 한다.
즉 VO는 값 그 자체를 나타내기 때문에 setter 같은 성격의 변조 가능성이 있는 메서드가 존재하면 안되며,
두 객체의 '필드 값이 같다면' 모두 같은 각체로 만드는 것이 핵심이다.
예시2)
package Model;
public class proverb_VO {
public MinigameQuestion_Model[] es;
public MinigameQuestion_Model[] nm;
public MinigameQuestion_Model[] hd;
public proverb_VO() {//vo : 값을 객체에 저장 읽기만 가능
this.es = new MinigameQuestion_Model[3];
this.nm = new MinigameQuestion_Model[3];
this.hd = new MinigameQuestion_Model[3];
es[0] = new MinigameQuestion_Model("금강산도 ( ? )", "식후경");
es[1] = new MinigameQuestion_Model("열 번 찍어 안 넘어가는 ( ? ) 없다", "나무");
es[2] = new MinigameQuestion_Model("꿩 대신 (?)", "닭");
nm[0] = new MinigameQuestion_Model("지렁이도 밝으면 ( ? ) 한다", "꿈틀");
nm[1] = new MinigameQuestion_Model("닭 잡아먹고 ( ? ) 내민다", "오리발");
nm[2] = new MinigameQuestion_Model("낫 놓고 ( ? )도 모른다", "기역");
hd[0] = new MinigameQuestion_Model("개구리 ( ? ) 적 생각 못 한다.", "올챙이");
hd[1] = new MinigameQuestion_Model("다 된 죽에 ( ? ) 빠트린다", "코");
hd[2] = new MinigameQuestion_Model("첫술에 ( ? )", "배부를까");
}
'Java' 카테고리의 다른 글
jdbc(Java DataBase Connectivity )기본구조 (0) | 2023.10.01 |
---|---|
전역변수 vs 지역변수 (0) | 2023.10.01 |
DTO (Data Transfer Object) (0) | 2023.09.29 |
DAO (0) | 2023.09.29 |
오버로딩과 오버라이딩의 차이 (0) | 2023.09.20 |