티스토리 뷰

Java/Java

<Java> OCP(Open-Closed Principle) 원칙이란?

면목동인간 2024. 5. 22. 20:12

OCP 원칙이란?

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

위의 두 의미를 합치면, 확장에는 열려있고, 변경에는 닫혀 있다는 뜻인데, 즉 기존의 코드는 수정 없이 새로운 기능을 추가할 수 있다는 의미이다. 

 

예제

예제 UML

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의 코드는 변경이 없다.

 


본 포스팅은 “김영한의 실전 자바 - 기본편/인프런”를 학습한 내용을 정리한 것

댓글
최근에 올라온 글
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함
Total
Today
Yesterday