개발 서적 기록/오브젝트_조영호

40, 41 일차 - 일관성을 통한 장점과 디자인 패턴

밍 끄적 2023. 9. 24. 23:52
728x90

2023.09.24 SUN

505p ~ 527p

 

39일차 기록 ⬇️

2023.09.21 - [분류 전체보기] - 38, 39일차 - 일관성 있는 설계와 캡슐화

 

38, 39일차 - 일관성 있는 설계와 캡슐화

2023.09.20 WED 483p ~ 504p 37일차 내용 ⬇️ 2023.09.18 - [개발 서적 기록/오브젝트_조영호] - 36, 37일차 - 계약에 의한 설계 36, 37일차 - 계약에 의한 설계 2023.09.18 MON 460p ~ 482p 35일차 내용 ⬇️ 2023.09.15 - [개

magenta-ming.tistory.com


일관성을 통한 장점

변경을 캡슐화해서 협력을 일관성 있게 만들면, 재사용의 장점이 있다.

변하는 부분을 변하지 않는 부분으로부터 분리했기 때문에, 변하지 않는 부분을 재사용할 수 있다.

새로운 기능을 추가하기 위해, 오직 변하는 부분만 구현하면 되므로 원하는 기능을 쉽게 완성할 수 있어, 테스트해야하는 코드의 양이 감소한다.

 

이렇게 일관성 있는 협력을 만들면, 정해진 구조를 우회하기 어렵게 만들어 주어진 제약 안에 머무르게 만든다.

이는 제약이지만, 오히려 더 작은 문제에 집중할 수 있도록해 오히려 협력을 확장하고 구체화할 수 있다.

 

개념적 무결성

유사한 기능에 대해, 유사한 협력 패턴을 적용하는 방법

시스템이 일관성 있는 몇개의 협력 패턴으로 구성된다면, 시스템을 이해하고 수정하고 확장하는데 필요한 노력과 시간을 아낄 수 있다.

 

디자인 패턴

SW 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법이다.

설계를 재사용하기 위해서 디자인 패턴을 사용하기 때문에 다양한 변경을 다루기에 적합하다.

즉, 디자인 패턴은 "특정한 변경을 일관성있게 다룰 수 있는 협력 템플릿"을 제공한다.

디자인 패턴을 익히면, 변경의 방향과 주기를 이해하면 필요한 역할과 책임, 각 역할의 협력 방식을 쉽게 이해할 수 있다.

 

Strategy 패턴

다양한 알고리즘을 동적으로 교체할 수 있는 역할과 책임의 집합 제공

 

Bridge 패턴

추상화의 조합으로 인한 클래스의 폭발적인 증가 문제를 해결하고자, 역할과 책임을 추상화와 구현으로 분해해 설계를 확장 가능하게 만드는 패턴

 

Observer 패턴

유연한 통지 메커니즘을 구축하고자, 객체 간 결합도를 낮출 수 있는 역할과 책임의 집합을 제공하는 패턴

 

Template Method 패턴

변하지 않는 부분은 부모 클래스로, 변하는 부분은 자식 클래스로 분리해 합성이 아닌 상속을 통해 알고리즘을 캡슐화하는 패턴

상속을 사용하므로, 추상 메서드를 이용해서 변경을 캡슐화해야한다.

부모 클래스가 알고리즘의 기본 구조를 정의하고, 구체적인 단계는 자식 클래스에서 정의하게 해 변경을 캡슐화 한다.

 

Decorator 패턴

객체의 행동을 결합하기 위해서 객체 합성을 사용함으로써, 객체의 행동을 동적으로 추가할 수 있는 패턴

 

프레임워크

프레임워크를 통해서 설계와 코드를 함께 재사용할 수 있다.

어떠한 프레임워크가 제공하는 아키텍처가 요구사항에 적합하다면, 다양한 환경에서 테스트를 거친 견고한 구현 코드를 쉽고 빠르게 재사용할 수 있다.

즉, 프레임 워크는 특정한 변경을 일관성 있게 다룰 수 있는 "확장 가능한 코드 템플릿"을 제공한다.

 

 

728x90