The Office Lover
디자인 패턴 - 개방 폐쇄 원칙 본문
확장할 때는 개방, 수정할 때는 폐쇄
개방 폐쇄 원칙은 코드의 확장성 문제로 볼 수 있다. 추후 변경되는 요구 사항에 대응할 때 코드가 확장할 때는 개방, 수정할 때는 폐쇄될 수 있다면 해당 코드의 확장성이 매우 뛰어나다는 것을 의미한다.
확장 가능한 코드를 작성하려면 확장, 추상화, 캡슐화에 대해 인식하고 있는 것이 매우 중요하다.
코드 작성시 현재 코드에 앞으로 요구 사항이 추가될 가능성에 대해 더 많은 시간을 할애할 필요가 있다. 미리 설계해 확장 가능하도록 미리 구성하면, 코드의 전체 구조를 변경할 필요 없이 새로운 코드가 유연하게 추가되며, 코드 수정을 최소화하면서 요구 사항을 만족시킬 수 있다.
- 코드의 변경 가능한 부분과 변경할 수 없는 부분을 잘 식별
- 변경되는 사항을 기존 코드와 분리할 수 있도록 변수 부분을 캡슐화
- 상위 시스템에서 사용되는 변경되지 않을 추상인터페이스를 제공
- 이 구조에서는 특정 구현이 변경되어도 추상 인터페이스를 기반으로 새로운 구현을 확장하여 기존 구현을 대체할 수 있다.
- 상위 시스템의 코드를 수정할 필요가 없다.
개방 폐쇄 원칙을 실현하기 위해 사용할 수 있는 구체적인 방법
코드의 확장성은 코드의 품질을 판단하는 중요한 기준이다.
고전적인 디자인 패턴 22개 중 대부분은 코드 확장성의 문제를 해결하기 위한 것이다.
코드의 확장성을 개선하기 위해 설계 원칙과 디자인 패턴에서 많이 사용되고 있는 방법은 다형성, 의존성 주입, 구현이 아닌 인터페이스 기반의 프로그래밍이 있다. 이는 전략 패턴, 템플릿 메서드 패턴, 책임 연쇄 패턴과 같은 대부분의 디자인 패턴에서 볼 수 있다.
프로젝트에 개방 폐쇄 원칙을 유연하게 적용하는 방법
개방 폐쇄 원칙 기반의 높은 확장성을 지원하는 코드를 작성하는 방법의 핵심은 확장 포인트를 미리 준비해두는 것이다.
금융, 전자 상거리, 물류 시스템과 같은 비즈니스 시스템을 개발하는 경우 가능한한 많은 확장 포인트를 준비하기 위해 비즈니스에 대한 충분한 이해가 있어야 한다.
하지만 비즈니스와 시스템에 대해 충분히 알고 있더라도 모든 확장 포인트를 미리 준비하는 것은 불가능하다. 따라서 추후 요구될 가능성이 거의 없는 사항들까지 미리 준비하는 것은 과도한 설계라고 할 수 있다.
일반적으로 추천하는 방법은
- 단기간 내에 진행할 수 있는 확장
- 코드 구조 변경에 미치는 영향이 비교적 큰 확장
- 구현 비용이 많이 들지 않는 확장에 대해 확장 포인트를 미리 준비하는 것
2023.07.27 - [Design Patterns] - 단일 책임 원칙 - single responsibility principle, SRP
단일 책임 원칙 - single responsibility principle, SRP
소개 객체지향 프로그래밍은 유지보수성과 재사용성으르 높이기 위해 다양한 설계 원칙을 제공합니다. 이 중에서도 '단일 책임 원칙'은 클래스나 모듈이 하나의 책임만을 가져야 한다는 원칙으
daniel6364.tistory.com
출처 : 디자인패턴의 아름다움
'Design Patterns' 카테고리의 다른 글
인터페이스 분리 원칙 - interface segregation principle, ISP (0) | 2023.07.28 |
---|---|
리스코프 치환 원칙 - Liskov Substitution Principle, LSP (0) | 2023.07.27 |
단일 책임 원칙 - single responsibility principle, SRP (1) | 2023.07.27 |
디자인 패턴 - 팩토리 패턴(factory pattern) (0) | 2023.06.05 |
인터페이스를 이해하는 다양한 방법 (0) | 2023.06.05 |