1.구조 대신 정적 공장 방법 사용 고려(Effective-자바 학습 노트)
우선 정적 공장 방법 과 디자인 모델 중의 공장 방법 모델 이 다르다 는 것 을 주의해 야 한다.다음은 Boolean 의 인 스 턴 스 입 니 다.
public final class Boolean implements java.io.Serializable, Comparable{
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
}
클래스 는 클 라 이언 트 에 게 공공 구조 방법 이 아니 라 정적 공장 방법 을 제공 할 수 있다.하지만 장점 도 있 고 단점 도 있다.
첫 번 째 장점 은 구조 방법 이 아 닌 이름 이 있다 는 것 이다.예 를 들 어 소수 일 수 있 는 BigInteger 의 구조 방법 인 BigInteger(int,int,Random)를 되 돌려 주면 BigInteger.probable Prime 의 정적 공장 방법 이 라 고 명명 할 수 있다.가 독성 을 높이다.
두 번 째 장점 은 구조 방법 과 달리 매번 새로운 대상 을 만 들 필요 가 없다 는 것 이다.이것 은 위 에 있 는 Boolean 의 코드 예 시 를 보면 알 수 있다.
세 번 째 장점 은 구조 방법 과 달리 임의의 유형의 모든 하위 유형의 대상 을 되 돌 릴 수 있다 는 것 이다.
네 번 째 장점 은 되 돌아 오 는 대상 의 종 류 는 입력 매개 변수 에 따라 다 를 수 있다 는 것 이다.
EnumSet 류(항목 36)는 공공 구조 방법 이 없고 정적 공장 만 있 습 니 다.
/**
* Creates an empty enum set with the specified element type.
*
* @param The class of the elements in the set
* @param elementType the class object of the element type for this enum
* set
* @return An empty enum set of the specified type.
* @throws NullPointerException if elementType is null
*/
public static > EnumSet noneOf(Class elementType) {
Enum>[] universe = getUniverse(elementType);
if (universe == null)
throw new ClassCastException(elementType + " not an enum");
if (universe.length <= 64)
return new RegularEnumSet<>(elementType, universe);
else
return new JumboEnumSet<>(elementType, universe);
}
다섯 번 째 장점 은 이 방법 을 포함 하 는 클래스 를 작성 할 때 되 돌아 오 는 대상 의 클래스 는 이러한 유연 한 정적 공장 방법 이 존재 하지 않 아 도 된다 는 것 이다.예 를 들 어 자바 데이터베이스 연결 API(JDBC)등 이다.서비스 제공 자 구 조 는 공급 자가 서 비 스 를 실현 하 는 시스템 이 고 시스템 은 클 라 이언 트 를 사용 할 수 있 게 하여 클 라 이언 트 를 실현 에서 분리 시킨다.
정적 공장 방법 만 제공 하 는 주요 제한 은 공공 이나 보호 방법 이 없 는 종 류 는 하위 화 할 수 없다 는 것 이다.
두 번 째 단점 은 프로그래머 가 찾기 가 어렵 다 는 것 이다.하하,두 렵 지 않 냐 고 물 었 다.
다음은 정적 공장 방법의 상용 명칭 입 니 다.
한 마디 로 하면 정태 적 인 공장 방법 과 공공 구조 방법 은 모두 그들의 용도 가 있 고 그들의 상대 적 인 장점 을 이해 하 는 것 이 가치 가 있다.일반적으로 정적 공장 은 더욱 바람 직 하기 때문에 정적 공장 을 고려 하지 않 은 상태 에서 공공 구조 방법 을 제공 하 는 것 을 피한다.
ps:위 챗 으로 책 을 읽 는 친구 가 있 으 면 위 챗 독서 군 전송 문 으로 조직 을 찾 을 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
1.구조 대신 정적 공장 방법 사용 고려(Effective-자바 학습 노트)한 가지 유형 에 대해 인 스 턴 스 를 얻 으 려 면 일반적인 방법 은 공용 구조 함 수 를 제공 하 는 것 이지 만 다른 방법 도 있다.우 리 는 정적 공장 방법 이 라 고 부 르 는데 실질 적 으로 간단 한 정...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.