본문 바로가기
개발 기록/backend

[백엔드] 프리온보딩 객체지향 3차시 - 객체지향 설계를 돕는 디자인패턴

by jeong11 2024. 1. 17.
반응형

프리온보딩 1차시 후기

 

[백엔드] 객체지향 1차시 - 소프트웨어 가치에서 시작하는 객체지향

사전과제 : 의존, 객체, 전략패턴... https://tiny-immj.tistory.com/51 [백엔드]원티드 - 프로젝트 유연함을 높이는 객체지향 첫걸음_사전미션 참가 링크 https://www.wanted.co.kr/events/pre_challenge_be_15 프로젝트

tiny-immj.tistory.com

 

프리온보딩 추가과제 

 

[백엔드] 원티드 프리온보딩 챌린지 객체지향 과제 - 설계

마트 계산 시스템을 구성하는 협력을 설계해보세요. 마트 계산 시스템 마트 계산 프로세스 - 고객이 상품을 카트에 담는다. - 마트오너는 계산하기 전 지불 정보를 만든다. - 고객은 지불 정보를

tiny-immj.tistory.com

 

프리온보딩 2차시 후기

 

[백엔드] 객체지향 2차시 - 프로젝트로 시작하는 객체지향

프리온보딩 1차시 후기 [백엔드] 객체지향 1차시 - 소프트웨어 가치에서 시작하는 객체지향 사전과제 : 의존, 객체, 전략패턴... https://tiny-immj.tistory.com/51 [백엔드]원티드 - 프로젝트 유연함을 높이

tiny-immj.tistory.com


2주차(3차시) 공부 내용은 다음과 같았다. 

- SOLID : 객체지향 설계 원칙

- 객체의 생성을 다루는 디자인 패턴

- 객체의 구조를 다루는 디자인패턴

- 객체의 행동을 다루는 디자인 패턴

가독성, 확장성, 재사용성, 유지보수성을 향상시키기 위해 사용한다. 

 

1. SOLID

- 단일책임 원칙 : 클래스가 하나의 책임이나 기능만 담당한다. 

- 개방 폐쇄 원칙 : 코드 수정에는 폐쇄적, 코드 확장에는 개방적

- 리스코프 치환 원칙 : 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상 동작해야 함 (Circle Ellipse Problem) 

- 인터페이스 분리 원칙 : 클라이언트는 자신이 사용하는 메소드에만 의존해야 함 

= 하나의 잉ㄹ반적인 인터페이스보다는 여러개의 구체적인 인터페이스가 나음

- 의존 역전 원칙 : 고수준 모듈은 저수준 모듈의 구현에 의존하면 안됨 

(고수준 모듈 : 의미있는 단일 기능을 제공하는 모듈 / 저수준 모듈 : 고수준 모듈의 기능을 구현하기 위해 필요한 하위 기능의 실제 구현)

 

2. 생성 디자인 패턴 중 팩토리 패턴 

- 단순 팩토리 패턴 :  어떤 클래스의 인스턴스를 생성하는데 사용되는 데이터와 코드가 여러 클래스에 퍼져 있는 경우, 생성 지식을 하나의 팩토리 클래스로 옮김 

(1) 장점 : 생성 로직을 클라이언트로부터 분리 가능, 생성을 위한 지식을 한 곳으로 모으는 것이 가능함 

(2) 단점 : 직접 생성으로 충분한 경우 설계가 복잡해짐 

 

- 팩토리 메소드 패턴 : 한 상속 구조 내 클래스들이 메소드를 구현하는데 객체 생성 단계를 제외한 나머지가 유사한 경우 객체생성은 팩토리 메소드에 맡기고 나머지는 수퍼 클래스로 옮긴다. 팩토리와 구체 클래스의 결합을 느슨하게 할 수 있음 

 

- 단순 팩토리 패턴과 팩토리 메소드 패턴 중 어떤 게 더 좋냐고는 말할 수 없다. 

팩토리 메소드 패턴이 좋아보이지만 생성자가 단순한 경우는 단순 팩터리 패턴이 좋다. 

 

3. 구조 디자인 패턴

- 퍼사드 패턴 : 개방 폐쇄 원칙 - 추상 인터페이스만 알게 하고 구상 객체를 외부에서 가져오게끔 책임을 미룸, 구상 객체를 다 알고 있는 main이 존재

= 의존성의 집합체면서 인터페이스의 집합체

 

- 컴포지트 패턴 : The composite pattern describes a group of objects that are treated the same way as a single instance of the same type of object. 

= 그룹과 오브젝트가 같은 인터페이스를 제공함으로, 루트에서 시작된 함수가 모든 오브젝트로 퍼지는 구조이다. 

 

4. 행동 디자인 패턴 

- 템플릿 메소드 패턴 : 실행 과정은 동일한데 '일부 구현'이 다른 경우 사용할 수 있는 패턴, 상위 클래스에선 실행 과정을 구현한 메소드 제공 (= 틀을 만들어놓고 하위 항목을 채워넣는 형태)

 

 

디자인 패턴 너무 종류도 많고 어려웠다... 이게 무슨 말일까 계속 생각했던 시간이었다.

예제 코드를 봤을 때는 이해가 가는 것 같았지만 활용은 어려울 것 같다. 추천해주신 책을 꼭 읽어봐야겠다는 생각이 들었다. 

 

디자인 패턴의 아름다움 : 네이버 도서

네이버 도서 상세정보를 제공합니다.

search.shopping.naver.com

 

반응형