레버지 공장에 수업을 디자인하고 확장 가능한 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/812409

  •  03-07-2019
  •  | 
  •  

문제

내 C ++ SOA 앱에는 서비스 간의 교환 데이터가 사용되는 "세션"개념이 있습니다. 예를 들어, 일부 서비스의 합법성을 확인하는 데 사용됩니다. 무엇이든.

두 가지 유형의 세션 모드가 있습니다 : Normal and What-IF. 더 나아가서, 나는 다른 세션, 합법성 세션, 할당 세션, Commit 등의 세션 등이 있습니다. 이것은 주요 문제입니다. 합법성 세션은 무엇이 나거나 실제 등이 될 수 있습니다.

이를 수정하고 코드 복제를 피하는 방법은 무엇입니까?

나는 만들 수있다 issessionfactory 인터페이스와 가지고 있습니다 Whatiffactory 그리고 진정한 구현하십시오. 그런 다음 나는 만들 수있다 IlegalitySession 그리고 만듭니다 Whatiflegalitysession 그리고 부동산 세션 구현하십시오. 그러면 내 공장은 적절한 물건을 반환 할 것입니다.

두 가지 주요 문제가 있습니다. 새로운 모드가 오면 어떻게됩니까? 모든 세션을 위해 새로운 공장과 새로운 수업을 구현해야합니다! 새 세션 유형이 오면 어떻게됩니까? 두 공장을 모두 바꿔야합니다 ...

아마도 2 개의 계층에서 사임하고 Whatif 세션을 "장식"실제 세션을 가질 수 있습니까? 변화를 어떻게 현지화 할 수 있습니까?

도움이 되었습니까?

해결책

데코레이터로 Whatif를 구현하십시오. 또는 전략의 종류에 대한 특정 부분을 추출하십시오.

또 다른 옵션은 상태 패턴을 사용하는 것입니다. 'Whatif'상태 및 '실제'상태.

다른 팁

제 생각에는 데코레이터 패턴 여기에 의미가 있습니다. 당신은 또한보고 싶을 수도 있습니다 전략 패턴 그리고 컴파일 타임 사촌, 정책 기반 설계. 더 많은 정보없이 가장 좋은 것을 말하기는 어렵습니다. 데코레이터는 추가 행동을 추가하는 데 좋습니다. 다른 두 개는 기존 행동을 변경하기위한 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top