엔티티는 확장을 위해 열려 있어야 하지만 수정을 위해 닫혀 있어야 한다.
기존 코드를 변경하지 않고도 새 기능을 추가 할 수있도록 코드를 작성 하라는 메시지다.
클래스 중 하나를 변경하면 모든 종속 클래스가 변경되야 하는 상황을 방지 할 수 있다.
인터페이스를 사용해 사용하는 코드를 변경하지 않고
쉽게 대체 할 수 있게 구현을 허용한다.
수정을 하지 않고도 계속적인 코드 확장이 가능해진다.
예제를 보면서 확인해보자
여기 일반적인 커피머신이 있다.
brewCoffee 로 커피를 추출하는 메소드를 가지고 있다.
이 커피 앱에서 자동으로 커피머신에서 커피를 추출할 수 있게 구현을 했다.
근데 만약 여기서 일반적인 커피 머신이 아니라
새로운 기능들이 추가된 새로운 커피머신을 사용해야 한다면?
이제 여기서 개방 폐쇄 원칙에 따라서
커피머신을 조정 할 수 있게 구현 할 수 있다.
커피 머신 인터페이스를 만들고
새로운 커피머신에 implements 시킨다.
현재 인터페이스 상속 상태
이제 커피 앱 생성자에서
커피머신을 선택할 수 있게 만들어 주면된다.
'Java > 객체지향 설계' 카테고리의 다른 글
객체지향 설계 - 단일 책임 원칙 (0) | 2021.03.05 |
---|---|
객체지향 특징 - 다형성 (0) | 2021.03.05 |
객체지향 특징 - 상속 (0) | 2021.03.05 |
객체지향 특징 - 캡슐화 (0) | 2021.03.05 |
객체지향의 특징 - 추상화 (0) | 2021.03.03 |