코드스쿼드 9일차
MVC
Model (클래스들의 묶음) 의 재사용성이 좋아짐.
현업에서 가장 변경 사항이 많은 부분은 View 다.
- why ? 시대의 흐름에 따라 디자인이 계속 바뀌기 때문
따라서, MVC 패턴으로 구현하면 각각이 독립적으로 역할 분담을 하기 때문에 UI 부분을 바꾸고 싶다면 View 만 바꾸면 됨.
MVC는 항상 컨트롤러를 통해서 이뤄지므로, View 와 Model 이 직접 연결되면 안됨
Controller 는 보통 1개이지만, 프로그램이 커지면 여러개가 될 수 있다.(sub 컨트롤러1, sub 컨트롤러2 …)
DTO
- 단순히 데이터만 전달하므로 로직이 많으면 안된다.
- Ex) CarDto => 자동차 목록, 우승자 목록
- 자바 빈 규약에 따라 Setter, Getter 허용 (Setter 로 언제든지 데이터 변경가능)
VO
Value Object (하나의 값을 추상화한 객체)
Value : 값, 변경 불가
Variable : 변수, 변경 가능
어떤 책에서는 "VO는 DTO다" 라고 예기하는 내용이 있는데, 이건 잘못된 내용이다.
많은 개발자들이 오해하고 있음.
Ex)
Public class PointNo{ Private final int no; Public pointNo(int no){ If(no < 0 || no > 24){ Throw new IllegalArgumentException(); } } }
위와 같이 하면 no는 안전한 값이라는 것이 보장되므로 코드가 안전해짐
VO로 안쓰면 Point 클래스에서 이것을 한번에 다 처리해야함
Mutable / Immutable
Mutable Object : ArrayList를 생성할때 변경할 수 있음
Immutable Object : ArrayList를 생성할때 변경할 수 없음
가능한 Immutable Object로 구현하는게 좋은 습관이다.
Ex)
Public class PointNo{ Private int no; Public PointNo(int no){ If(no<0 || no > 24){ Throw new IllegalArgumentException(); } This.no = no; } Public PointNo plus(int no){ Return new PointNo(this.no + no); } }
위 코드는 plus를 했을 때 기존 객체 값을 바꾸는 것이 아닌,
새로운 객체를 만드는 것이므로 Immutable Object 다.
JCF (Java Collection Framework)
많이 쓰는 순서
- ArrayList
- HashMap
- HashSet
위 3가지만 제대로 알아도 현업에서는 문제없다.
나머지는 필요할때 추가적으로 공부
HashMap => key, value
Ex) 사전 , 전화번호부
전체 데이터를 꺼내는 경우 keySet을 이용
Ex)
Set<Integer> keys = points.keyset(); For(Integer key : keys){ Point point = points.get(key); }
'코딩 교육 기관 > 코드스쿼드 백엔드 레벨2' 카테고리의 다른 글
2018.10.15 (월) (0) | 2018.11.11 |
---|---|
2018.10.11 (목) (0) | 2018.11.11 |
2018.10.04 (목) (4) | 2018.10.25 |
2018.10.01 (월) (2) | 2018.10.25 |
2018.09.24 (월) (1) | 2018.10.22 |
댓글