2008-09-09 7 views
3

나는 이미이 질문에 답을 얻었으므로 사전에 사과하겠습니다 만 정확한 키워드를 검색 할 수는 없습니다. "패턴"검색 방법이 너무 많아 Q & A가 유용합니다.두 객체가 겹치는 패턴

회귀 테스트 응용 프로그램을 만들고 있습니다. 화면에 양식을 표시하고 어떤 사용자가 응용 프로그램에 로그인했는지에 따라 일부 필드는 읽기 전용이어야합니다. 그래서 나는 필드 객체를 추상화 할 수 있으며 사용자 객체를 추상화 할 수 있지만이 두 개념의 교차점을 설명하기 위해 어떤 패턴을 조사해야합니까? 즉, 필드 1과 사용자 A의 필드는 읽기 전용이어야한다고 어떻게 설명해야합니까? 그것은 읽기 전용 (또는 아닙니다) Field 클래스의 속성이어야하지만 내가 말했듯이, 그것은 어떤 사용자가 폼을보고 있는지에 달려있다. 간단한 2 차원 배열 (예 : ReadOnly [Field, User] = True)을 고려했지만, 이것을 나타 내기 위해 가장 효과적인 구조를 선택했는지 확인하고 싶습니다.

이러한 종류의 데이터 구조와 관련된 소프트웨어 디자인 패턴이 있습니까? 내가 2 차원 배열이 여기에 갈 수있는 최선의 방법이 될까? 제가이 질문을 받고 답을 얻었다면 사과드립니다. 나는 여기에서 검색을했고 아무 것도 찾지 못했고 Google 검색은 아무 것도 나타나지 않았다.

답변

2

테이블 기반 디자인이 효과적 일 수 있습니다. 스티브 맥과이어에는 몇 가지 좋은 예가있었습니다 글 쓰기솔리드코드.

이들은 또한 테스트를 캡처하는 좋은 방법입니다 (fit 참조). 같은 귀하의 경우 뭔가에

: AS를

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

field1.readOnly = Field1ReadonlyRules[ someUser.userClass ] 

옆으로 당신은 아마 모두 사용자 및 사용자 클래스/역할/그룹 결합하는 대신 모델링합니다. 사용자는 일반적으로 캡처 사람 (인증) 그룹/역할이

+0

대단한 제안 인 maccullt입니다. 감사; 테이블 구동 기법이이 문제에 접근하는 가장 좋은 방법 일 수 있습니다. –

1

처음에는 두 가지 유형의 사용자가있는 것처럼 들리지만 액세스 수준이 다릅니다. 이는 상속 (PowerUser, User) 또는 사용자의 수준을 설정하는 보안 개체 또는 토큰을 포함하여 해결할 수 있습니다.

규칙 상속이 마음에 들지 않으면 응용 프로그램의 상태 패턴, 사용자 객체 장식 (Shudder) 또는 다른 보안 수준을위한 전략 패턴을 추가 할 수 있습니다. 하지만 아직 초기 단계라고 생각합니다. 상품이 어떻게 성장하고 유지 될지 확고히 알기 전까지는 일반적으로 패턴을 적용하지 않습니다.

+0

예, 댄, 그건 꽤 많은 상황이다 무엇 (권한, 기능)을 캡처하는 동안 - 실제로이 포함 된 다양한 수준의 보안이하지만 난 당신을 포인트. 그것은 대단한 제안입니다. 감사. –

관련 문제