프리온보딩 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
'개발 기록 > backend' 카테고리의 다른 글
[review] <객체지향의 사실과 오해> (0) | 2024.01.25 |
---|---|
[백엔드]프리온보딩 객체지향 마지막 후기 - 내 코드를 안전하게 변경하는 방법 (0) | 2024.01.22 |
[review] <함께 자라기 - 애자일로 가는 길> (0) | 2024.01.12 |
[백엔드] 프리온보딩 객체지향 2차시 - 프로젝트로 시작하는 객체지향 (1) | 2024.01.09 |
[백엔드] 원티드 프리온보딩 챌린지 객체지향 과제 - 설계 (0) | 2024.01.08 |