일반적인 공유 방법을 넣을 위치


9

나는 모든 곳에서 일반적으로 사용되는 많은 방법을 가지고 있습니다. 현재 코드 파일의 이름은 전역으로, 실제로는 전역으로 표시됩니다.

그러나 나는 이것을 좋아하지 않습니다.

이것을 클래스로 그룹화하고 인터페이스를 전달하고 싶습니다. 하나의 인스턴스 만 만들지 만 여기서는 싱글 톤 함정에 빠지지 않습니다.

우선, 수업 이름을 어떻게 지정해야합니까? 관리자가 잘못된 아이디어를 얻지 못할 것이기 때문에 글로벌 이름을 피하고 싶습니다.

또한, 행동이 변화하고 적응할 수 있도록 그러한 일련의 방법들을 분리하는 것을 어떻게 고려해야합니까?

메소드 세트에는 다음과 같은 것들이 포함됩니다.

  • 변환 표
  • 클립 보드 상호 작용
  • 내장 글꼴 관리
  • 일반적인 그리기 방법
  • 자주 사용하는 리소스에 액세스 할 수있는 인터페이스 제공

상태를 저장하지 않거나 상태를 저장하는 순수한 Util 메소드와 같은 것입니까?
TheLQ

싱글 톤 트랩에 빠지지 않은 경우 +1
Caleb

@TheLQ 상태를 반드시 저장할 필요는 없지만 편의상 const 데이터 (예 : 변환 차트)를 보유합니다.
Lee Louviere

답변:


4

네임 스페이스는 [application].Common.Shared

수업 이름은 다음과 같습니다.

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

나는 그들이 다른 일을하는 것처럼 들리기 때문에 수업을 해체 할 것입니다.


1

하나의 인스턴스를 만들려면 싱글 톤이 거의 있습니다. 또한 사람들이 싱글 톤 트랩에 대해 이야기 할 때 일반적으로 말하는 것은 싱글 톤이 전역 적이며 대부분의 클래스가 전역 적이 지 않은 것이 더 낫다는 것입니다. 싱글 톤이있을 수도 있습니다. 호출하려는 객체에 인터페이스를 합리적으로 전달할 수 있다면 실제로 전역 적이 지 않습니다.

또한, 하나의 전역 메소드에 모두 적용하면 하나의 메소드에 대한 각 변경이 새로운 서브 클래스를 필요로 할뿐만 아니라 각 변경 조합 에 자체 서브 클래스가 필요하기 때문에 동작 변경 및 적응이 어려워집니다 .

나는 전 세계적으로 하나의 싱글 톤을 가지고 있고 (당신의 말을 모두 받아 들일 것입니다) 인스턴스를 제공하는 일종의 레지스트리 또는 팩토리를 추천합니다 (인터페이스가 싱글 톤으로 구현 될 수 있는지 여부를 의미합니다) 약속하지 마십시오). 발신자의 관점에서 그들이하는 일을 기준으로 이름을 지정합니다.


1

일반적으로 이러한 유형의 항목을 "foo.Common.Collections"또는 "foo.common.UI"등의 네임 스페이스 아래에서 "foo.Common"과 같은 자체 어셈블리 이름에 넣습니다. 그런 다음 모든 프로젝트에서 어셈블리를 참조 할 수 있습니다. 나는 그것들이 필요해.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.