객체지향 프로그래밍에 있어서 "디자인 패턴"은 중요한 개념이라고 생각합니다.
객체지향 프로그래밍의 특징을 다양한 방식으로 활용해서 더 유용한 프로그램을 만들어낼 수 있습니다.
다음 책의 내용을 공부하면서 가볍게 하루 공부한 내용을 정리해보고자 합니다.
다음과 같은 특징들을 활용하여 여러가지 디자인 패턴을 활용할 수 있다는 것을 알아볼 예정입니다.
- 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분과 분리합니다.
달라지는 부분만 변경할 수 있어서 시스템의 유연성을 향상시킬 수 있습니다. 객체지향의 캡슐화에 해당합니다.
- 구현보다는 인터페이스에 맞춰서 프로그래밍합니다.
특정 클래스의 특정 행동을 해당 클래스에 직접 구현하기보다는 특정 행동을 별도의 클래스(특정 행동 인터페이스를 구현한)에 구현하는 것입니다. 객체지향의 다형성을 활용한다고 보면 되겠습니다.
- 상속보다는 구성을 활용합니다.
특정 클래스는 행동을 상속받는 대신, 행동 자체의 객체를 통해 행동을 부여받습니다. 마찬가지로 다형성을 활용한다고 보면 됩니다.
디자인 패턴은 개발자 사이에서 서로 모두 이해할 수 있는 용어를 제공합니다. 그렇다면 다른 개발자와 더 쉽게 소통이 가능해집니다.
또한, 디자인 패턴은 라이브러리나 프레임워크가 도와주지 못하는 부분을 도와줍니다. 라이브러리나 프레임워크는 특정 기능을 제공해주는 것에 치중되어 있습니다. 디자인 패턴은 특정 기능보다는 기능 간의 관계 등, 프로그램의 구조를 유연하게 만드는 데에 집중한다고 생각합니다.
이 책에서는 디자인 패턴의 설명을 전략 패턴과 함께 쭉 이어옵니다. 전략 패턴인지는 마지막에 밝혀긴 하지만요.
전략 패턴의 자세한 내용은 제가 남겼던 포스팅 [내일배움캠프 TIL] 디자인 패턴 - 전략 패턴을 참고해보시면 좋을 것 같습니다.