티스토리 뷰
OCP 원칙이란?
- Open for extension: 새로운 기능의 추가나 변경 사항이 생겼을 때, 기존 코드는 확장할 수 있어야 한다.
- Closed for modifiction: 기존의 코드는 수정되지 않아야 한다.
위의 두 의미를 합치면, 확장에는 열려있고, 변경에는 닫혀 있다는 뜻인데, 즉 기존의 코드는 수정 없이 새로운 기능을 추가할 수 있다는 의미이다.
예제

Player
public class Player {
private GameConsole gc;
public void setGc(GameConsole gc) {
this.gc = gc;
}
public void play() {
gc.gamePlay();
}
}
GameConsole
public interface GameConsole {
void gamePlay();
void gameFinish();
}
Fifa
public class Fifa implements GameConsole{
@Override
public void gamePlay() {
System.out.println("Fifa 실제 게임을 플레이 합니다.");
}
@Override
public void gameFinish() {
System.out.println("Gta 실제 게임을 저장 후 종료합니다.");
}
}
Gta
public class Gta implements GameConsole {
@Override
public void gamePlay() {
System.out.println("Fifa 실제 게임을 플레이 합니다.");
}
@Override
public void gameFinish() {
System.out.println("Gta 실제 게임을 저장 후 종료합니다.");
}
}
GameMain
public class GameMain {
public static void main(String[] args) {
Player player = new Player();
player.setGc(new Fifa());
player.play();
}
}
정리
- 확장에는 열려있다: 새로운 게임을 추가할 경우 GameConsole 인터페이스를 구현해서 기능을 추가할 수 있고 Player가 자유롭게 호출할 수 있다.
- 변경에는 닫혀 있다: 실제 Game을 사용하는 진짜 코드는 Player에게 있는데 Player의 코드는 변경이 없다.
본 포스팅은 “김영한의 실전 자바 - 기본편/인프런”를 학습한 내용을 정리한 것
'Java > Java' 카테고리의 다른 글
| <Java> volatile이란? (0) | 2024.10.18 |
|---|---|
| <Java> Thread join() 메서드란? (3) | 2024.10.16 |
| <Java> 불변 객체가 필요한 이유? (2) | 2024.10.13 |
| <Java> 해시 자료 구조에서 equals(), hashCode() 메서드의 중요성 (0) | 2024.07.01 |
| <Java> 열거형(ENUM)이 생긴 이유? (0) | 2024.06.20 |
댓글
