Java | 객체 지향 프로그래밍과 OCP 원칙

Lumpen·2025년 4월 15일
0

Java

목록 보기
18/38

OCP(Open-Closed Principle)

객체 지향 프로그래밍의 원칙 중 하나

  • Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드를 확장할 수 있어야 한다
  • Closed for modification: 기존의 코드는 수정되지 않아야 한다

기존 코드 수정 없이 새로운 기능을 추가할 수 있어야 한다는 의미로
캡슐화된 객체 간 메시지로만 소통하고 서로 영향을 주지 않아야 한다는 것 같다
결합도를 줄이고 응집도를 높이는..

확장에 열려있는 코드

객체에 직접 의존하지 않고 인터페이스에 의존하도록 코드를 작성하면
언제든지 구현을 통해 새로운 인스턴스를 추가, 사용할 수 있다

Car 인터페이스가 있다면
새로운 차종이 추가된다 하더라도 인터페이스를 사용하는
클라이언트 코드인 Driver 또한 Car 에 추가된 차종을 자유롭게 이용할 수 있다

수정에 닫혀있는 코드

Car 에 변경이 일어나더라도 클라이언트 코드인 Driver 는
수정 없이 Car 를 이용할 수 있다

다형성 활용과 역할/구현을 잘 분리한 코드는
새로운 기능을 추가하더라도 대부분의 핵심 코드는 그대로 유지할 수 있다

전략 패턴

가장 중요한 패턴 중 하나로
알고리즘을 클라이언트 코드의 변경 없이 쉽게 교체할 수 있다
Car 인터페이스가 전략을 정의하는 인터페이스가 되고
각 차량이 전략의 구체적인 구현이 된다
그리고 그 전략을 클라이언트의 코드 변경 없이 손 쉽게 교체할 수 있다

자바에서 이런 것들을 다 모두 가능하게 하는 것은
다형성이다

null object 패턴

null 체크에 대한 로직을 객체로 만들어
조건문의 default 옵션에서 사용하도록 한다

null object 또한 해당 인터페이스를 implements 후
overide 후 default 옵션에서 null 클래스의 인스턴스를 반환하도록 구현

profile
떠돌이 생활을 하는. 실업자, 부랑 생활을 하는

0개의 댓글