Effective Java 독서회 첫날

5503 단어 Java
관련 링크
http://d.hatena.ne.jp/amachang/20100215/1266245521

대체 프로젝트 1 구조기 연구 static 공장 방법

  • 구조기
  • Car.java
    public class Car {
        //クラス変数
        public static int createdCar = 0;
        //インスタンス変数
        public int adultNum;
        //車を作るときのコンストラクタ
        Car() {
            this.adultNum=4;
            Car.createdCar += 1;
        }
        //adultNum人乗りの車を作るコンストラクタ
        Car(int adultNum) {
            this.adultNum = adultNum;
            Car.createdCar += 1;
        }
    
        public static Car newInstance() {
            this();
        }
    
    }
    
  • static방법
  • ≈ 유형 방법: 유형에 속하는 방법.반마다 하나밖에 없다.인스턴스 없이도 사용 가능
    ↔실례 방법: 실례에 속하는 방법.종류마다 여러 개가 있다.실례가 없으면 사용할 수 없다
  • 즐겨찾기 프레임
  • HashMap, ArrayList 등

    Good


    좋아하는 이름으로 지어졌어요. (구조기의 과부하 상황을 알기 어려워요)
    객체의 생성을 제어할 수 있습니다(객체의 생성은 비용입니다).
    대상 생성 제어는enum에 있습니다!
    반환 반환 유형의 하위 유형 범주 반환
    만약 구조기라면 그 반 자체를 돌려줄 수밖에 없다
    생성 대상 (때로는) 간단 (guava 라이브러리)
    형식 매개 변수를 두 번 쓰기가 힘듭니다.

    Bad


    전문적인 컴퓨터를 가진 반의 하위 클래스를 만들 수 없다
    구조기도 마찬가지인가요?
    다른 방법과 이름으로 구분할 수 없습니다
    공장 방법이에요!이름 지어줄게.
    valueOf, of, getInstance, newInstance, getType, newType
  • 스왑 위치
  • 프로젝트 2 여러 개의 구조기 파라미터에 직면할 때 구조기를 연구한다


    이름 있는 파라미터처럼 멋있어!

    프로젝트 3은 privete의 구조기나 enum형 강제 단식 특성을 사용합니다


    단식은 어렵든 어렵지 않든 테스트할 수 없다
    단식을 하려면 Enum형이 제일 좋아요.
    singleton.java
    public enum PropertiesCarrer {
        INSTANCE("env.properties");
    
        private bundle;
        private String name;
    
        public PropertiesCarreer(name) {
            bundle = ResouceBundle.getBundle(name);
        }
        public ResouceBundle getBundle() {
            return bundle
        }
    }
    PropertiesCarrer.INSTANCE.getBundle();
    

    프로젝트 4 provate 구조기로 강제 실례화 불가


    구조기를 privte로 만들어 실례화하지 않음(ex단식, Util 등급 등)
  • Util 클래스 및 서비스
  • Utils 레벨
    클래스 방법으로만 구성된 클래스, 클래스 이름.방법()처럼 부르다
    무상태
    서비스 클래스
    실례 방법류.방법()처럼 부르다
    스프링, SAStruts에서는 단식 대상이기 때문에 컨디션 없이 만드는 게 좋아요.

    프로젝트 5 불필요한 객체 생성 방지


    객체를 생성하려면 비용이 필요합니다.
    아무것도 new 하지 않고 재사용 대상을 고려하다
    트랩 → SimpleDateFormat
    다중 스레드에서 비스레드 보안 대상(상태 대상)을 공유하면 오류가 발생합니다
    → 모든 것을 재활용해서는 안 된다
    맵 같은 게 뚜렷한 상태인 건 알지만 sdf는 직관적인 상태가 아니야...

    항목 6 무효 대상 인용 삭제


    너는 상대가 언제 죽을 것 같니?

    Stack은 과거에 배열된 모든 객체를 참조하므로 참조 수가 0이 아닙니다.
    아무것도 비우지 마세요.

    프로젝트 7 Finaliza 방지


    C++ 사용자: 아, 분석기가 없네요.
    자원의 회수는finally에서 해야 합니다.
    그럼 얘가 쓸 거예요?
    지금은 자원이 풀리지 않았을 때의 보험으로 사용되고 있는 것 같아요.
    제3장 여기서) ↓
    http://qiita.com/qwerty__/items/bb40ca48674bcbbe98bd

    좋은 웹페이지 즐겨찾기