객체지향 5원칙 : 2.OCP 개방폐쇄 원칙, "폐쇄와 확장"은 이렇게!

 

nothing in this world can take the place of persistence

(세상에 어떤것도 끈기를 대신할 수 없다.)

 

 

 

 

개방폐쇄 원칙 Open Close Principle

 

1)요점

 

확장에 대해서는 개방, 변경에 대해서는 폐쇄되어야 한다는 원칙

 

- 객체 기능의 확장을 허용하되, 스스로의 수정은 피해야한다는 의미

 

 

 

2)예시

 

게임 유닛이 만들어야해서, 유닛class의 공통사항을 생각해며 method와 field(맴버변수)를 만드는 중입니다.

 

 

메소드 중에 이동 메소드는 '위치'와 '속도'를 받아, 그 위치까지 길을 찾는 인공지능을 사용하여 이동하는 기능입니다.

 

그런데 특정 유닛은 이동할 때 다른 움직임이 되어야 한다고 할 때, 어떻게 해야 할 것인가?

 

이때, 이동메소드에서 움직임을 나타내는 부분을 움직임메소드로 분리하고, 구현을 하위클래스에 맡깁니다.

 

이러면 특정유닛클래스에서 움직임메소드만 재정의하면(확장), 유닛클래스를 수정할 필요가 없어집니다(폐쇄)

 

 

 

-참고할 키워드 : 인터페이스, 추상클래스

 

댓글

Designed by JB FACTORY