본문 바로가기

컴퓨터과학54

[디자인패턴] MVC 패턴 목적 업무 로직(Business Logic) 및 데이터(Model)와 보이는 부분(View)을 분리 요소 문제 : 데이터와 해당 데이터를 보여주는 부분(뷰)의 코드가 섞여있음 해결 : 데이터와 뷰를 분리하고 이들을 연동시키는 컨트롤러를 추가 결과 : loose coupling, 재사용성 설계 모델 : 데이터를 관리하는 부분 뷰 : 화면에 보이는 부분 컨트롤러 : 사용자의 입력을 처리하고, 모델과 뷰 사이에서 상호작용을 할 수 있도록 지원 MVC 패턴의 장단점 장점 클래스간 정보 공유를 최소화시킴 - 모델과 뷰가 서로에 대해 잘 몰라도 됨 같은 모델에서 여러 개의 뷰를 지원할 수 있음 단점 뷰가 업데이트 되어야 함을 알려줘야함 - 모델이 뷰에게 데이터를 직접 전달하는 것 보다 비효율적임 컨트롤러의 역할이 .. 2021. 12. 12.
[디자인패턴] 템플릿 메소드 패턴 (Tempalate Method Pattern) 목적 알고리즘의 뼈대를 정의하고, 일부를 서브 클래스로 위임. 알고리즘의 구조를 변경하지 않고 알고리즘의 일부 내용을 서브 클래스에서 재정의 할 수 있도록 함 요소 문제 : 알고리즘들을 캡슐화시키면서 중복되는 코드가 여러 클래스에 존재함 해결 : 알고리즘의 중복되는 부분을 부모 클래스에 캡슐화, 달라지는 부분만 서브 클래스에 구현 결과 : 중복되는 코드를 줄임 정의 추상 클래스에서 고정된 알고리즘 즉, 알고리즘 뼈대를 구현 - templateMethod. 구현체마다 다를 수 있는 primitivOperation은 추상 메소드로 구현 상속받은 Concrete 클래스는 primitiveOperation 메소드를 구현하여 전체 알고리즘을 완성한다. 음료 레시피 구현 "물을 끓인다 (boilWater)"와 "컵.. 2021. 12. 11.
[디자인패턴] 상태 패턴 (State Pattern) 목적 객체의 내부 상태가 바뀔 때 객체의 동작을 변경할 수 있도록 함. 객체는 자신의 클래스를 바꾸는 것 처럼 보임. 요소 문제 : 상태가 여러개 있고, 이를 if 문으로 통제함 해결 : 상태를 한 곳에서 관리 결과 : 변경 최소화 정의 A상태의 handle과 B상태의 handle의 동작이 다르다. -> 상태가 다르면 객체의 동작이 다름 뽑기 기계 구현 뽑기 기계는 4 가지의 상태(매진, 동전없음, 동전있음, 판매)가 있고, 다음의 4 가지 메소드(동전 투입, 반환, 손잡이 돌림, 알맹이 내보냄)가 있다. 상태 패턴을 사용하지 않고 이를 구현하려면 메소드마다 state에 대한 조건문을 구현해야 한다. (4*4 = 16가지를 구현) 만약 state가 추가된다면 조건문을 모든 메소드에 추가해야 된다 -> 문.. 2021. 12. 11.
[디자인패턴] 커멘드 패턴 (Command Pattern) 목적 요구사항(요청, 명령)을 객체로 캡슐화시킨다. 이를 통해 요구사항을 큐에 넣거나 로그를 남길 수 있으며 작업 취소 기능을 지원할 수도 있다. 사용하려₩는 객체가 많고, API가 서로 다른 경우에 사용한다. 요소 문제 : 사용 객체의 API가 서로 다름 해결 : 실행과 요청을 분리 결과 : 작은 클래스가 많아지지만, 객체 사용에 필요한 복잡성을 제거하고 감춤 (함수 이름이 동일해짐) 정의 커멘드 패턴 클래스를 가정집 리모컨 사용으로 비유 Client : 리모컨 버튼의 기능을 인지하고 버튼을 누름 Command : 버튼에 실제 사용 객체를 연결해 놓음 Invoker : 리모컨 버튼을 누르면 기능을 실행함 Receiver : TV, 전등 같은 실제 객체 Command Receiver를 알고 있고, Rec.. 2021. 12. 6.