오픈 클로즈 원칙에 대한 Wikipedia page (오늘 2013 년 2 월 27 일 현재)은 상속을 통해 실현된다고 말합니다.Façade는 공개 원칙을 사용합니까?
이름 열기/닫기 원칙은 두 가지 방식으로 사용되었습니다. 두 가지 방법 모두 명백한 딜레마를 해결하기 위해 상속을 사용하지만 목표, 기술 및 결과는 다릅니다.
"두 가지 방법"은 Meyer의 구현 상속과보다 일반적인 다형성 확장을 참조합니다.
어쨌든, 제 질문은 이 아닌 Façade 패턴에 관한 것이고은 상속을 사용합니다. 보다 복잡한 서브 시스템 (또는 라이브러리)에 대한 단순화 된 인터페이스의 형태로 추상화를 정의했기 때문에 이것을 개방형 원칙으로 간주 할 수 없습니까? 구체적 :
서브 시스템 (또는 라이브러리) 인터페이스를 변형 폐쇄 인 외관, 사용하는 클라이언트에 대한 확장개방된다.
또는 그냥 (당신이 Protected Variations로 간주 특히, OCP 매우 가깝습니다) 정보 은폐의 경계를 스트레칭하고있다.
'클라이언트의 요구 사항이 Facade로 변경되면 Facade도 변경됩니다.'클라이언트는 수정 *에 대해 닫힙니다. 전략도 그렇게 깨질 것입니다. 'Facade가 관심을 갖는 방식으로 Facade가 변하는 수업이 있다면, Facade도 그렇습니다. '- 그러나 Facade의 숨겨진 부분이 바뀝니다. [OCP == 클래스 내 비공개 변수] (https://www.cs.duke.edu/courses/fall07/cps108/papers/ocp.pdf#page=9). – Fuhrmanator
저는 Facade가 불안정한 (개인 같은) 하위 시스템에 대한 안정적인 인터페이스라고 봅니다. 인터페이스 나 추상 클래스가 필요하다는 것에 대해서는 확실하지 않습니다. [JOptionPane] (https://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html)은 내가 좋아하는 Facade의 예입니다. 추상 클래스/인터페이스는 아닙니다. 그것의 public 부분은 (아마 메소드를 추가하는 것을 제외하고는) 언제든지 바뀔 것입니다. – Fuhrmanator
나는 이것에 대해 조금 생각하고 아직 말하지 않은 나의 입장을 설명하기 위해 어떤 말도하지 않았다. 내가 뭔가를 생각하면 돌아올거야. –