개방-폐쇄 원칙

Open–closed principle

객체지향적 프로그래밍에서, 개방형-폐쇄 원칙은 "소프트웨어 실체(클래스, 모듈, 기능 등)확장을 위해 개방되어야 하지만 수정을 위해 폐쇄되어야 한다."[1] 즉, 그러한 기업은 소스 코드를 수정하지 않고도 자신의 행동이 확장되도록 허용할 수 있다.

개방-폐쇄라는 명칭은 두 가지 방법으로 사용되어 왔다.두 가지 방법 모두 일반화(예: 상속 또는 위임 기능)를 사용하여 명백한 딜레마를 해결하지만, 목표, 기법 및 결과는 다르다.

개방-폐쇄 원칙은 객체 지향 설계의 5가지 SOLD 원칙 중 하나이다.

마이어의 개방-폐쇄 원칙

Bertrand Meyer는 일반적으로 1988년 저서 Object Oriented Software Construction에 등장한 개방-폐쇄 원칙이라는 용어를 발기한 것으로 알려져 있다.[2][1]: 23

  • 모듈이 아직 연장 가능한 경우 개방된다고 한다.예를 들어, 필드를 포함하는 데이터 구조에 추가하거나 필드를 수행하는 기능 집합에 새로운 요소를 추가할 수 있어야 한다.
  • 다른 모듈에서 [it]를 사용할 수 있으면 모듈이 닫힌다고 한다.이는 모듈에 잘 정의되고 안정적인 설명(정보 은닉의 의미에서의 인터페이스)이 주어졌다고 가정한다.

마이어가 글을 쓰고 있을 때, 필드와 기능을 도서관에 추가하는 것은 불가피하게 그 도서관에 따라 어떤 프로그램에도 변경이 필요했다.[citation needed]이 딜레마에 대해 마이어가 제안한 해결책은 객체 지향 상속(특히 실행 상속)의 개념에 의존했다.[1]: 229

클래스는 컴파일되고, 라이브러리에 저장되고, 기본 제공되며, 클라이언트 클래스에 의해 사용되기 때문에 닫힌다.그러나 그것은 또한 열려있다. 왜냐하면 어떤 새로운 클래스가 새로운 특징을 추가하면서 그것을 부모 클래스로 사용할 수 있기 때문이다.하위 클래스가 정의되면 원본은 변경하거나 클라이언트를 방해할 필요가 없다.

다형 개방-폐쇄 원리

1990년대 동안, 개방-폐쇄 원칙은 추상화된 인터페이스의 사용을 언급하기 위해 대중적으로 재정의되었다. 추상화된 인터페이스는 구현을 변경할 수 있고 다중 구현을 생성하고 서로 대신할 수 있다.

마이어의 사용과는 대조적으로, 이 정의는 추상적인 기본 계층으로부터의 상속을 옹호한다.인터페이스 사양은 상속을 통해 재사용할 수 있지만, 구현은 그럴 필요가 없다.기존 인터페이스는 수정에 닫히고 새로운 구현은 최소한 그 인터페이스를 구현해야 한다.

로버트 C. 마틴이 1996년에 쓴 "열린-폐쇄 원칙"[2]은 이런 접근법을 취하기 위한 정석문 중 하나였다.2001년에 Craig Larman은 개방형-폐쇄 원리를 Alistair Cockburn의 "Protected Variable"이라고 불리는 패턴과 정보 은닉에 대한 David Parnas의 논의와 연관시켰다.[3]

참고 항목

참조

  1. ^ a b c Meyer, Bertrand (1988). Object-Oriented Software Construction. Prentice Hall. ISBN 0-13-629049-3.
  2. ^ a b 로버트 C. 마틴 "공개 원칙", , 1996년 1월 2006년 8월 22일 웨이백 기계에 보관
  3. ^ Larman, Craig (May–June 2001). "Protected Variation: The Importance of Being Closed" (PDF). IEEE Software. IEEE. 18 (2): 89–91.

외부 링크