2009-10-27 3 views
2

정적 메서드 나 일반 인스턴스를 사용하도록 코딩하는 동안 어느 것이 선호되는지 알고 싶지만 정적 인 메서드를 사용하는 것이 좋습니다. 일부 의심Static (VB.NET에서 공유) 또는 일반 메서드

예를 얻을

EmployeeCollection EmpLst = EmployeeManager.GetAllEmployees(); 

또는

EmployeeManager EmpMgr = new EmployeeManager(); 
EmployeeCollection EmpLst = EmpMgr.GetAllEmployees(); 

EmployeeManager는 (선택 업데이트를 삭제) 많은 방법을 가지고 그들 모두 정적하게 확인하는 경우

.

정상적인 인스턴스 인 경우 GetAllEmployees()가 많이 사용되는 경우 항상 개체가 시작될 경우 단점이되지 않습니다.

더 나은 접근 방법은 무엇입니까?

+0

다음 스레드 확인 : http://stackoverflow.com/questions/596367/static-methods-vs-instance-methods-in-c, http://stackoverflow.com/questions/202631/performance-of-using -static-methods-vs-instantiated-the-met- – Groo

답변

3

, 그럼 난 당신이 OOP 원칙을 따르지 않는 가정합니다. 정적 메서드는 팩터 메서드 또는 보조 메서드로 유용합니다. 그러나 나는 그것들 위에 애플리케이션 디자인을 구축하는 것을 피할 것이다.

+0

하지만 ASP.NET 응용 프로그램에서는 요청이 완료되어 전송 될 때마다 개체가 삭제됩니다. 그래서 메소드를 호출 할 때마다 객체를 초기화해야합니다. 단점이되지 않습니까? – Kronass

+2

우선, 성능이 아닌 디자인에 관심을 가져야합니다. 잘 설계 한 후에는 성능이 허용 가능한지 여부를 확인할 수 있습니다. 그렇지 않은 경우 정적 방법이나 다른 방법을 고려할 수 있습니다. –

+0

대단히 감사합니다. 매우 유용했습니다. – Kronass

1

이런 종류의 물건을 생각한 창조적 인 패턴 인 공장 및 싱글 톤 패턴을 살펴볼 수 있습니다. 귀하의 문제에 대해서는 객체의 일회성 생성을 강제하는 싱글 톤을 사용하는 것이 좋습니다. 정적 방법을 많이가있는 경우

Abstract Factory

Singleton

(dofactory.com 링크)

+1

IMHO, 싱글 톤은 크게 과대 평가됩니다 ... –

+0

정교하게 신경 써야합니까? – Dominiek

+0

싱글 톤의 장점은 무엇입니까? 그래, 파생 된 클래스 위에 싱글 톤을 만들 수는 있지만 그게 전부가 아니니? 싱글 톤과 정적 클래스의 유일한 차이점은 싱글 톤을 위해 Instance-property에 액세스하는 오버 헤드가 있다는 것입니다. –

0

GetEmployee 메서드의 경우 정적으로 고정합니다.

필자는 메서드가 필요하다면 인스턴스 상태 및 인스턴스 메서드에 액세스 할 필요가없는 경우 일반적으로 정적을 사용합니다. 따라서 메서드에 인스턴스 상태가 필요하지 않으면 인스턴스 메서드를 사용하지 않습니다.