2 Agosto 2019

개방 폐쇄 원칙 예제

오픈 클로즈드의 이 특정 원칙은 이를 멋지게 할 수 있는 방법을 공식화하는 데 도움이 됩니다. 시간이 되면 기존 코드를 수정해야 하는 경우: 코드가 확장에 열려 있지만 수정이 종료되도록 하면 기존 클래스 및 어셈블리에 대한 향후 변경을 효과적으로 허용하지 않아 프로그래머가 강제로 변경해야 합니다. 을 사용하여 확장 점에 연결할 수 있는 새 클래스를 만듭니다. 명백하게, 이것은 개방 폐쇄 원칙의 명백한 위반이다. 새 기능에 대한 지원을 추가하려면 클래스를 수정해야 합니다. 실제로 ClaimApprovalManager 클래스를 작성한 첫 번째 인스턴스에서 개방형 폐쇄 원칙을 위반했습니다. 이는 현재 예제에서 무해한 것처럼 보일 수 있지만 빠르게 변화하는 비즈니스 요구에 보조를 맞춰야 하는 엔터프라이즈 응용 프로그램의 결과를 고려합니다. 각 변경마다 전체 응용 프로그램을 수정, 테스트 및 배포해야 합니다. 따라서 응용 프로그램을 확장하기가 취약하고 비용이 많이 들뿐만 아니라 소프트웨어 버그가 발생하기 쉽습니다.

OCP 다음에 오는 코드를 작성하려는 경우 전략 패턴에만 제한하거나 “구현이 아닌 인터페이스별로 프로그래밍”으로 제한해서는 안 됩니다. 이러한 모범 사례를 사용하여 확장에 열려 있고 수정에 닫을 수있는 힘을 보여주고 싶었습니다. 개방형 폐쇄 원칙은 보다 읽기 쉽고 유지 관리 가능하며 업그레이드 및 수정이 용이한 잘 설계된 코드를 작성하는 5가지 SOLID 소프트웨어 엔지니어링 원칙의 “O”를 나타냅니다. 버트 랜드 마이어는 1988 년에 출시 된 그의 책 객체 지향 소프트웨어 건설에 처음 등장 한 오픈 폐쇄 원칙이라는 용어를 만들었습니다. 이것은 자바의 초기 출시 약 8 년 전이었다. 이 기사에서는 두 번째 : 개방 / 폐쇄 원칙에 초점을 맞추고 싶습니다. 이러한 작업 방식의 매우 강력한 예는 플러그인 아키텍처입니다. 이에 대한 고전적인 사용은 타사에서 만든 필터를 연결할 수있는 이미지 편집기입니다. 이미지 편집기는 필터에 대해 구체적으로 알지 못합니다 : 이미지 필터로 사용할 코드 조각에 대한 최소 요구 사항을 정의하는 추상화 계약이 있으며 플러그인에 대한 추가 가정을하지 않습니다. 본 계약을 이행할 수 있습니다.

이렇게 하면 코드 없이 이미지 편집기에서 다른 코드에서 해당 기능을 확장할 수 있습니다. 밥 마틴은 여기에 이것에 대해 쓴다: https://8thlight.com/blog/uncle-bob/2014/05/12/TheOpenClosedPrinciple.html. 나중에, 그는 자신의 SOLID 원칙에 포함 할 때, 밥 마틴은 더 나은 표현 : 소프트웨어 개발자로서 우리의 책임 중 하나는 우리가 쓰는 것을 변경할 수있는 것을 예측하는 것입니다. 우리는 올바른 추상화 수준과 행동 확장의 올바른 지점을 찾기 위해 집중해야 합니다. 이후 확장에 코드를 닫고 동작이 항상 변경되고 진화할 수 있으므로 현재 동작에 연결해서는 안 됩니다. 우리는 무엇을 바꿀 수 있고 무엇을 확장할 수 있는지 예상해야 합니다. 이 원칙은 그렇게하는 방법을 우리에게 말하지 않기 때문에 너무 실용적인 소리하지 않습니다,하지만 이것은 원칙을 존중하기위한 몇 가지 좋은 관행이 없다는 것을 의미하지 않는다.

Contact us

Get in touch with us!