본문 바로가기
코딩 교육 기관/코드스쿼드 백엔드 레벨2

2018.10.08 (월)

by 성건희 2018. 11. 11.
반응형

코드스쿼드 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)

  • 많이 쓰는 순서

    1. ArrayList
    2. HashMap
    3. 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

댓글