Java에서 사용하면 더 좋은 점이 있습니까? 단일 멤버 또는 모든 정적 멤버가 포함 된 클래스? 또는 그것은 중요하지 않습니까?모든 정적 멤버가 포함 된 싱글 톤 또는 클래스
예를 들어 X
클래스를 다른 클래스에서 액세스하려고하지만 X
클래스는이를 사용하는 모든 클래스에 대해 비슷한 값을 포함해야합니다.
Java에서 사용하면 더 좋은 점이 있습니까? 단일 멤버 또는 모든 정적 멤버가 포함 된 클래스? 또는 그것은 중요하지 않습니까?모든 정적 멤버가 포함 된 싱글 톤 또는 클래스
예를 들어 X
클래스를 다른 클래스에서 액세스하려고하지만 X
클래스는이를 사용하는 모든 클래스에 대해 비슷한 값을 포함해야합니다.
모든 정적 클래스는 논리적으로 함께 그룹화되지만 그 사이에 상태 (필드)를 공유하지 않는 공유 유틸리티 메서드에 자주 사용됩니다. 당신은 그 역할을 다른 행동을 다른 개체를 할 수 있습니다
싱글 톤은 더 좋다.
ActionListener
)(이 말을하는 또 다른 방법 : 당신이 다형성이 필요한 경우, 단일 객체가 아닌 클래스 여야합니다)
들어 나 : Singleton is an anti-pattern과 강한 이유가있는 경우에만 사용해야합니다, 또한 공공 정적 변수를 홀로 수업 내 의견에 받아 들일 수없는,이 소리가 진짜 내게 지향 객체가 아닙니다. Dependency Injection을 사용할 수 있습니다. 이점은 테스트 가능성이며 싱글 톤 생성에 대한 이중 검사를 피할 수 있습니다 (enum을 사용하지 않는 경우). 객체에서 온 당신은 또한 볼이 방법으로
public class SharedObject{
// content
}
public class Worker{
private final SharedObject sharedObject;
public Worker(SharedObject sharedObject){
this.sharedObject = sharedObject;
}
}
, 당신은 easyly Mocktio를 사용하여 공유 객체를 조롱 할 수 있습니다
이 같을 것이다. 따라서 코드를 쉽게 테스트 할 수 있도록 구조화해야합니다. 반면에 더 모듈화 된 방향으로 나아갈 것입니다.
정적 클래스가 Singleton보다 의미있는 경우도 있습니다. java.lang.Math의 예를 볼 수 있습니다. 이것은 싱글 톤이 아닙니다. 그저 정적 인 방법을 우리에게 제공하고 있습니다.
클래스가 상태를 유지하지 않고 일부 메소드에 대한 전역 액세스 만 제공하는 경우 컴파일 타임 동안 정적 바인딩으로 인해 정적 메소드가 Singleton보다 빠르기 때문에 정적 클래스를 사용해야합니다. 정적 메서드를 재정의 할 수 없으므로 정적 메서드에서는 다형성을 사용할 수 없습니다.
개체의 상태를 유지하려면 정적 메서드 대신 싱글 톤으로 이동해야합니다. 전체 OO 기능이있는 클래스가 필요한 경우에는 정적 모드를 선택하고 정적 개체는 저장해야하는 경우에는 Singleton을 선택합니다. 정적 클래스를 사용하는 것보다 http://javarevisited.blogspot.com/2013/03/difference-between-singleton-pattern-vs-static-class-java.html#ixzz2iNE3rW4i
을 내가 FacesContext
같은 상태 형 클래스> versa- 부사장으로 단지 Math
또는 System
클래스와 같은 비 상태이며, 클래스 정적 메서드를 선호하고, 싱글 :
당신은 더 읽기 여기 에 대한 자세한 설명을 할 수 있습니다 .
정적 메소드를 사용하는 비유자가 가능 및 클래스가 아닌 인스턴스 가능 클래스입니다. 예 :: 당신이 적용 범위와 비슷한 상태을 유지하려는 경우에만
public final class Constants {
private Constants() {
// non-public constructor
}
public static final Pattern ID_PATTERN = Pattern.compile("^\\d{4,10}$");
public static final Locale DEFAULT_LOCALE = new Locale("en", "US");
...
}
사용 싱글. 그러나 클린 디자인을 원할 경우 두 클래스 여야합니다.
자바는 객체 지향 프로그래밍 언어입니다. –
아니요, 귀하의 요구 사항이 전혀 명확하지 않습니다. 어떤 의미에서 더 좋습니까? 무슨 목적을 위해? –
불완전한 요구 사항이있는 질문을합니다. 더 단순한 방법이나 정적 방법이 더 나은지를 결정하기 위해 더 많은 이론적 지식을 필요로합니다. 얻을 수있는 패턴 디자인을 연구하는 것이 좋습니다. 귀하의 질문에 대한 답변이 충분하지 않습니다. –