ocp 예제

위의 예에서, 우리는 추상적 인 보험 조사원 클래스를 확장 건강 보험 조사및 차량 보험 조사원 클래스를 썼다. 두 클래스 모두 isValidClaim() 메서드의 다른 구현을 제공합니다. 이제 클레임승인 관리자 클래스를 작성하여 열기/닫기 원칙을 따릅니다. 이 문서에서는 OCP(개방형 폐쇄 원칙)에 대한 설명을 제공하며 C#의 간단한 예제를 보여 줍니다. 단일 회사의 모든 개발자 급여의 총 비용을 계산해야 하는 작업이 있다고 가정해 보겠습니다. 물론 이 예제를 간단하게 만들고 필요한 주제에 초점을 맞출 것입니다. 벨로우는 오픈 클로즈 원칙을 위반하는 예입니다. 그것은 다른 모양의 그림을 처리 하는 그래픽 편집기 구현. GraphicEditor 클래스를 추가해야 하는 모든 새 셰이프 클래스에 대해 수정해야 하므로 닫기 닫기 열기 원칙을 따르지 않는 것은 분명합니다. 몇 가지 단점이 있습니다: 다음 예제에서는 셰이프 배열의 영역 합계를 계산하는 클래스를 보여 주습니다. 새 셰이프가 도입되면 두 가지 를 구현해야 합니다: 미들웨어의 경우, 예를 들어 요청 응답 주기가 있고 그 사이에 중간 비즈니스 논리를 추가하여 추가 서비스를 제공하거나 문제를 교차할 수 있습니다. 응용 프로그램. 좋은 예는 Redux 미들웨어입니다.

이 문서에서는 두 가지 다른 예제와 함께 열린 닫기 원칙을 따라 코드를 작성하는 방법을 보여 드리겠습니다. 처음에는 어떤 예제도 OCP 규칙을 준수하지 않지만 초기 개발 직후 OCP를 사용하여 코드를 리팩터링할 예정입니다. 최종 결과는 두 경우 모두 동일하지만 코드가 중단된다는 의미로 첫 번째 결과는 좋은 메시지를 생성했습니다. 그러나 이것은 매우 모호합니다. 변수가 무엇인지 알 수있는 방법은 없습니다 – 우리의 경우 문자열 – 어떤 속성을 찾고 찾을 수 없습니다. 디버깅하고 문제를 해결하는 것은 어렵습니다. 프로그래머는 Progress 수업을 열고 읽고 이해해야 합니다. 이 경우 typehint을 명시적으로 지정하지 않은 계약은 Progress의 동작에 의해 정의됩니다. 이는 진행률로만 알려진 암시적 계약입니다. 이 예제에서는 getAsPercent() 메서드에서 전송된 두 필드와 길이에 대한 액세스에 의해 정의됩니다.

실제 생활에서 암시적 계약은 클래스에서 몇 초 동안 찾는 것만으로는 매우 복잡하고 발견하기 어려울 수 있습니다. 플러그인의 경우 공통 게이트웨이 인터페이스를 통해 새로운 기능과 기능을 연결할 수 있는 기본 또는 코어 모듈이 있습니다. 이 것의 좋은 예는 크롬 같은 웹 브라우저. 보다 현대적인 방법은 컴포지션 또는 복합 디자인 패턴을 사용하는 것입니다. 컴포지션 울부짖음의 사용 예를 보자: 보험 청구 예제에 대한 이상적인 접근 방식은 클레임승인관리자 클래스를 남아 있는 방식으로 설계하는 것이었을 것입니다: 이 프로젝트 구조를 사용하면 필터링 기준을 필터링 기준을 확장할 수도 있습니다. 예를 들어, OLED 및 와이드스크린 모니터만 볼 수 있습니다. 우리가해야 할 일은 다른 사양 클래스를 만드는 것입니다. 위의 예에서는 새로운 기능(차량 보험 청구 승인)을 통합하는 새로운 프로세스VehicleClaim() 메서드를 추가하여 ClaimApprovalManager 클래스를 수정했습니다. 벨로우는 오픈 클로즈 원칙을 지원하는 예입니다. 새 디자인에서는 그래픽 편집기에서 추상 그리기() 메서드를 사용하여 객체를 그리는 동시에 콘크리트 모양 객체에서 구현을 이동합니다.

새 셰이프 클래스가 추가될 때 GraphicEditor가 변경되지 않기 때문에 닫기 닫기 닫기 닫기 원칙열기 원칙을 사용하면 이전 디자인의 문제를 피할 수 있습니다. 따라서 이제 와이드스크린 모니터와 같은 화면 기능별로 필터를 구현해야 하는 경우 새 클래스로 필터를 구현할 수 있습니다. : 고용 인력.

© 2019 A MarketPress.com Theme