18

나는 최근에 정말로 정말로 의존성 주입과 데코레이터 디자인 패턴의 경이로움을 그저 사로 잡고있다.Decorator Pattern에 어떤 이름 지정 규칙을 사용합니까?

그러나 나는 그것이 다른 사람들이하는 일을 알고 싶어서 멋진 데다가 내 데코레이터 클래스의 이름을 지정하는 것이 어려웠습니다. 항상 Decorator라는 단어를 추가합니까? 인터페이스의 이름을 꾸미 는가? 그들은 그들 자신의 네임 스페이스를 얻나요?

너희들 뭐하니?

답변

2

일반적 패턴은 그것이 Decorator 접미사로 사용하여이 경우, 클래스 패턴 이름을 포함하는 명확하고 쉽게 (객체의 컬렉션 대) 객체로 캡슐화된다. 이것은 프록시, 데코레이터, 팩토리, 어댑터 등을위한 잘 작동하지만, 브리지와 같은 패턴의 구현에 객체 그룹이 필요한 다른 패턴 (즉, 어떤 객체가 적절하게 -bridge 접미어를 사용합니까?)에서 작동하지 않습니다.

17

디자인 패턴 이름을 사용하지 마십시오. 나는 이것이 문서화에 속해 있다고 생각한다. 데코레이터 클래스/함수의 이름이나 기능의 이름을 지정합니다. 그것이 장식하거나 다리를 맺거나 연결하거나 대리하거나 재 표현한다는 사실은 거의 결과가 아닙니다.

문자열 이름을 지정할 때마다 문자열 접미사를 추가합니까? hgrn처럼 들리네. 나에게 노테이션을 쓰고, 나는 그걸 시도하고 피하는 것이다.

+0

'hgrnNotation' == 헝가리 표기법, 혼란 스럽습니다. –

5

부르는대로하십시오.

나는 IPrinter 인터페이스를위한 장식자를 많이 가지고있다. 그들은이라고하고 있습니다 :

  • PrintDisasterRecovery -
  • PrintQueuer 예외 처리 - 만든다 그것에게 비동기 호출이

이 갈라진 두 사람이 커버 아래에 피킹합니다 경우 그들이 볼 수 있도록, PrintDecorator에서 상속 무슨 일이야.

11

예를 들어 Java API의 IO 프레임 워크에서 가져옵니다. 데코레이터 패턴을 광범위하게 사용하지만 클래스 이름에는이 패턴이 반영되지 않습니다. 예를 들어, BufferedReader는 FileReader를 장식 할 수 있습니다. 그러나 Readers는 함수의 이름을 따서 명명됩니다.

자주 사용되는 동일한 클래스를 포함하는 다른 패턴을 통합하면 이름에 데코레이터를 추가하면 더 많은 문제가 발생할 수 있습니다. MyDecoratorStrategyComponent라는 클래스로 끝날 수도 있습니다.

+6

... 또는 심지어 AbstractSingletonProxyFactoryBean - http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/aop/framework/AbstractSingletonProxyFactoryBean.html – blank

관련 문제