전략패턴 예제

그래서 지금 우리는 실제로 DeleteIfNotInSource에서 상속 하 고 ShouldDelete 메서드를 재정의 하 여 usf 파일을 유지 하는 우리의 전략을 구현 해야! 첫 번째 단계는 내가 추정하는 각 전략 구현을 테스트하는 것입니다. 두 번째는 입력에 따라 올바른 전략이 선택되었는지 테스트하는 것입니다. 전략 패턴을 사용하여, 우리는 수위에 대한 우리의 지식에 대한 책임의 우리의 CarWash 프로그램을 완화해야합니다. 이 문제를 해결하기 위해 배달 논리와 모든 저장소에서 물건을 롤백하는 메서드가 포함된 기본 배달 클래스를 만들었습니다. 이러한 메서드는 실제로 오류의 경우 배달 시스템에서 직접 호출되지 않습니다. 대신, 클래스는 종속성 주입을 사용 하 여 “롤백/오류 처리 전략” 클래스 (시스템을 사용 하 여 고객에 따라) 오류의 경우에 호출 되는 차례로 해당 전략에 대 한 적절 한 경우 롤백 메서드를 호출 합니다. Windows 페인트 응용 프로그램에서 다른 섹션에서 모양과 색상을 독립적으로 선택할 수 있는 전략 패턴을 볼 수 있습니다. 여기서 모양과 색상은 런타임에 변경할 수 있는 알고리즘입니다. 정렬 알고리즘을 하위 클래스링하는 대안을 취했다면 결국 이해및 유지 관리가 어려운 코드가 실행됩니다. I, 우리는 구현하는 구체적인 전략에 대한 하나의 특정 인터페이스가 있습니다. 전략 패턴은 런타임에 알고리즘을 선택할 수 있는 행동 설계 패턴입니다 — 위키백과 이것은 일반적인 활동이 많은 제조 라인 및 작업 셀과 같은 것들과 함께 사용하는 가장 좋아하는 패턴 중 하나입니다 (바코드 읽기, 재고 관리 등)하지만 구현 세부 사항은 작업 영역마다 어느 정도 다릅니다. 이제 우리는 우리가 원하는 청소 전략을 CarWashProgram에 전달합니다.

와우!! 좋은하지만 OOP는 모든 아니다, 클래스를 구성하는 방법과 그들의 관계는 중요한 것입니다. 뇌, 도시, 개미, 건물 과 같은 복잡한 시스템은 패턴으로 가득합니다. 오래 지속되는 상태를 달성하기 위해 그들은 잘 구성된 아키텍처로 구축됩니다. 그리고 소프트웨어 개발은 배제되지 않습니다. 우선 우리는 인수로 전달 된 금액을 지불하는 우리의 경우, 우리의 전략 패턴 예제에 대한 인터페이스를 만들 것입니다. 다시 말하지만, 이전 게시물이지만 여전히 검색을 켜므로 두 가지 예제를 추가 합니다 (코드는 C #에 있음). 프로젝트 매니저가 “응용 프로그램이 `X`를 하기를 원하지만 `X`는 아직 명확하지 않고 가까운 장래에 변경 될 수 있습니다”라고 말할 때 나는 전략 패턴을 절대적으로 좋아합니다. 전략 패턴을 설명하는 이 동영상은 스타크래프트를 예로 들 수 있습니다. 그런 다음 해당 데이터를 작성하는 프로세스는 매우 간단하여 우선 순위 큐의 맨 위에 계속 튀어나와 추출하는 개체의 형식에 따라 전략을 선택합니다.

전략 디자인 패턴은 알고리즘의 “패밀리”를 캡슐화하고 런타임 동안 사용할 풀에서 하나를 선택하는 동작 디자인 패턴의 유형입니다. 알고리즘은 서로 를 대체 할 수 있음을 의미, 교환 할 수 있습니다. 이 동기화를 수행 하려면 합성 가능한 전략 패턴을 사용 합니다. 메인 프로그램은 기본적으로 요일(동기화만 변경/모든 동기화)과 학업 일정을 기준으로 한 학기 시간에 따라 마스터 전략을 선택합니다. 청구 주기가 종료되는 경우 청구 전략으로 구성됩니다. 그런 다음 표준 인터페이스를 통해 선택한 전략을 실행합니다. 사용의 설명 예제와 함께 아주 좋은 게시물. 실제 예제는 항상 예제에 추가 가치를 추가합니다. 나는 디자인 패턴의 열렬한 팬이기 때문에이 게시물을 즐겼습니다. 위의 UML 클래스 다이어그램에서 Context 클래스는 알고리즘을 직접 구현하지 않습니다. 대신 컨텍스트는 알고리즘(strategy.algorithm)을 수행하기 위한 전략 인터페이스를 참조하여 컨텍스트를 알고리즘이 구현되는 방식과 독립적으로 만듭니다.

Strategy1 및 Strategy2 클래스는 전략 인터페이스, 즉 알고리즘을 구현(캡슐화)합니다.