Day8

피오·2021년 11월 10일
0
post-thumbnail

parameter와 argument의 차이

  • parameter : 매개변수. 메서드의 입력 '변수'.
  • argument : 인자. 메서드의 입력 '값'.

메서드 선언부의 method(String s) {...} 변수 s는 parameter.
메서드 호출부에서 입력되는 method("abc"); "abc"는 argument.


MVC패턴

클래스와 메서드를 나누다보니 자바의 MVC패턴에 대해 공부해야 할 필요성이 느껴졌다.
그래서 [10분 테코톡] - 🧀제리의 MVC 패턴을 보고 정리해보았다.

  • MVC패턴은 코드 유지보수를 돕기 위해 만들어진 패턴이다.
  • view는 사용자에게 보여주는 부분을 담당
  • model은 데이터와 관련된 부분
  • 컨트롤러는 모델과 뷰의 중개자

MVC를 지키면서 코딩하는 방법

1. 모델은 컨트롤러와 뷰에 의존하지 않아야 한다.

쉽게 말해 모델 내부에 컨트롤러나 뷰와 관련된 코드가 있으면 안된다.

ex)
public class Student {
	private String name;
	private int age;

	public Student(String name, int age){
    		this.name = name;
            	this.age = age;
    	}
    
	public String getName() {
    		return name;
        
        
        public String getName() {
            return name;
        }
}

위의 Student 클래스는 모델로서, 데이터에 관련된 코드만 가지고 있다.

2. 뷰는 모델에만 의존해야 하고, 컨트롤러에는 의존하면 안된다.

뷰 내부에는 모델의 코드만 있을 수 있고 컨트롤러의 코드가 있어선 안된다.

ex) 
public class OutputView {
	public static void printProfile(Stduent student) {
		System.out.println("이름 : " + student.getName());
		System.out.println("나이 : " + student.getAge());
	}
}

파라미터로 모델인 Stduent를 받는 걸 볼 수 있다. 이건 모델에 관련된 코드니까 괜찮다. 하지만 컨트롤러와 관련된 코드는 없어야 한다.

3. 뷰가 모델로부터 데이터를 받을 때에는 사용자마다 다르게 보여주어야 하는 데이터만 받아야 한다.

사용자마다 다르게 보여줘야 하는부분과 똑같이 보여주는 부분이 있다. 이때 다르게 보여줘야 하는 정보들은 뷰에서 모델로부터 정보를 받겠지만, 똑같이 보여줘야 하는 부분들은 뷰가 자체적으로 가지고 있어야 한다. 이걸 모델로부터 받아오면 안된다는 것이다.

ex) 인터넷 주문 화면
주문자 정보 - 모델로부터 받아오는 정보
그 외 화면 출력할 static한 정보 - 뷰가 가지고 있어야 할 정보.

4. 컨트롤러 내부에는 모델, 뷰에 대한 코드가 있어도 된다.

컨트롤러는 뷰와 모델의 중개자로서 전체 로직을 구성하기 때문.

5. 뷰가 모델로부터 데이터를 받을 땐 반드시 컨트롤러에서 받아야 한다.

ex)
public class Controller {
	public static void main(String[] args) {
		Student student = new Student("기철", 25);
		OutputView.printProfile(student);  
	}
}

향후 공부 키워드

  • SOLID 단일 책임 원칙(SRP - Single Responsibility Principle)
  • 책임 할당
  • 낮은 결합도, 높은 응집성


참조

profile
블로그 이전했습니다. https://pzbg.tistory.com/

0개의 댓글