문제

이미 질문하고 답변한 내용이라 미리 사과드리며, 검색할 정확한 키워드를 파악하지 못하고 있습니다."패턴"을 검색하면 Q&A가 너무 많아 유용하지 않습니다.

저는 회귀 테스트 앱을 개발 중입니다.화면에 양식을 표시하고 있는데 어떤 사용자가 앱에 로그인했는지에 따라 일부 필드는 읽기 전용이어야 합니다.따라서 필드 개체와 사용자 개체를 추상화할 수 있지만 이 두 개념의 교차점을 설명하려면 어떤 패턴을 살펴봐야 합니까?즉, 필드 1과 사용자 A에 대해 필드가 읽기 전용이어야 함을 어떻게 설명해야 합니까?읽기 전용(또는 아님)이 Field 클래스의 속성이어야 하는 것처럼 보이지만 앞서 말했듯이 양식을 보고 있는 사용자에 따라 다릅니다.나는 간단한 2차원 배열(예:g.ReadOnly[Field,User] = True) 그러나 이를 표현하기 위해 가장 효과적인 구조를 선택했는지 확인하고 싶습니다.

이런 종류의 데이터 구조와 관련된 소프트웨어 설계 패턴이 있습니까?제가 일을 너무 복잡하게 만들고 있습니까? 2차원 배열이 여기로 가는 가장 좋은 방법일까요?내가 말했듯이 이것이 질문되고 대답되었다면 사과드립니다.여기에서 검색했는데 아무것도 찾지 못했고 Google 검색에서도 아무것도 나오지 않았습니다.

도움이 되었습니까?

해결책

테이블 기반 디자인이 효과적일 수 있습니다.스티브 맥과이어는 좋은 예를 거의 가지고 있지 않았습니다. 글쓰기 단단한 암호 .

또한 테스트를 캡처하는 좋은 방법이기도 합니다. 맞다 .

귀하의 경우에는 다음과 같습니다.

Field1ReadonlyRules = {
    'user class 1' : True,
    'user class 2' : False
}

field1.readOnly = Field1ReadonlyRules[ someUser.userClass ]

여담으로 당신은 아마도 모델을 하고 싶을 것입니다. 둘 다 사용자와 사용자 클래스/역할/그룹을 결합하는 대신.사용자는 일반적으로 캡처합니다. WHO (인증) 그룹/역할이 캡처되는 동안 무엇 (권한, 능력)

다른 팁

처음에는 두 가지 유형의 사용자가 있고 서로 다른 액세스 수준을 갖고 있는 것처럼 들립니다.이는 상속(PowerUser, User)을 통해 해결되거나 사용자 수준을 설정하는 보안 개체 또는 토큰을 포함하여 해결될 수 있습니다.

규칙으로 상속을 좋아하지 않는 경우 애플리케이션에서 상태 패턴을 사용하거나 사용자 개체를 장식하거나(Shudder) 다양한 보안 수준에 대한 전략 패턴을 추가할 수 있습니다.하지만 아직은 조금 이르다고 생각합니다. 일반적으로 아이템이 어떻게 성장하고 유지될지에 대한 확고한 아이디어가 나올 때까지 패턴을 적용하지 않습니다.

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