자바 SE 의 단일 디자인 모델 & 다 중 디자인 모델

4567 단어 자바 문법
글 목록
  • 단일 모드
  • 굶 주 린 한식 사례: 올 라 오 면 new
  • 게으름뱅이 식 사례: 사용 시 new (이중 잠 금 단일 모드)
  • 굶 주 린 사람과 게 으 른 사람의 차이
  • 여러 가지 디자인 모델
  • 단일 모드
    단일 모델 디자인 은 하나의 예화 대상 만 생 성 할 수 있 는 종 류 를 말한다.단일 디자인 모델 은 게 으 른 사람 식, 굶 주 린 사람 식 두 가지 형식 이 있다.그렇다면 어떻게 해야만 한 종류 로 하여 금 하나의 실례 화 대상 만 생기 게 할 수 있 습 니까?우 리 는 먼저 그것 의 실현 을 고려 하여 하나의 종 류 를 예화 할 때 구조 함 수 를 호출 하여 이 루어 진다. 일반적으로 우 리 는 Public 접근 권한 으로 구조 함 수 를 수식 하고 몇 개의 대상 을 정의 하려 면 몇 개의 대상 을 정의 한다.그러나 이 제 는 하나의 실례 화 대상 만 생 성 하려 면 접근 권한 을 private 로 변경 하고 외부 접근 을 허용 하지 않 으 며 내부 접근 만 허용 하 는 것 을 연상 합 니 다.즉, private 수식 구조 함수 이후 에 우 리 는 클래스 밖에서 대상 을 예화 할 수 없고 클래스 안에서 대상 을 예화 할 수 밖 에 없다. Singleton SINGLENTON = new Singleton ().그러나 이때 클래스 의 대상 (속성) 은 일반 속성 입 니 다. 모든 일반 속성 은 실례 화 대상 이 있 을 때 만 메모리 공간의 분 배 를 할 수 있 습 니 다. 현재 외부 에서 실례 화 대상 이 생 길 수 없 기 때문에 하나의 방법 을 생각해 야 합 니 다. 실례 화 대상 이 없 을 때 도 SINGLENTON 을 사용 할 수 있 습 니 다.이때 static 키 워드 를 사용 하 는 것 을 연상 합 니 다. * *static 수식 의 정적 대상 변 수 는 클래스 로 딩 할 때 대상 을 예화 하여 메모 리 를 분배 합 니 다. * *하나의 실례 화 대상 만 생 성 하 는 것 을 실현 하기 위해 서 는 SINGLENTON 이라는 속성 도 당연히 private 로 수식 해 야 하 며 외부 에 보이 지 않 고 final 키 워드 를 추가 하 는 경우 가 많다.private 속성 을 얻 으 려 면 getter () 방법 을 제공 해 야 합 니 다. 이 때 는 static 속성 에 접근 하고 이 종 류 는 외부 에서 예화 대상 을 제공 할 수 없 기 때문에 static 의 getter () 방법 을 제공 해 야 합 니 다. static 방법 도 대상 의 예화 통 제 를 받 지 않 기 때 문 입 니 다.구체 적 으로 다음 코드 를 보십시오.
    굶 주 린 사람
    class Singleton{
        //         
        private final static  Singleton SINGLENTON=new Singleton();
        //private      ,                    
        private Singleton(){};
        //               
        public static Singleton GetSinglenton(){
            return SINGLENTON;
        }
    }
    public class Test {
        public static void main(String[] args) {
           Singleton sin1=Singleton.GetSinglenton();
            Singleton sin2=Singleton.GetSinglenton();
            Singleton sin3=Singleton.GetSinglenton();
            System.out.println(sin1);//hhh.pre.java.Singleton@4554617c
            System.out.println(sin2);//hhh.pre.java.Singleton@4554617c
            System.out.println(sin3);//hhh.pre.java.Singleton@4554617c
        }
    }
    

    게으름뱅이 식 단일 예: 사용 시 new (이중 잠 금 단일 예 모드)
    class Singleton{
        //       
        private static Singleton SINGLENTON;
        //    
        private Singleton(){};
        //        ,           
        public static Singleton GetSinglenton(){
            if(SINGLENTON==null){
                SINGLENTON=new Singleton();
            }
            return SINGLENTON;
        }
    }
    public class Test {
        public static void main(String[] args) {
           Singleton sin1=Singleton.GetSinglenton();
            Singleton sin2=Singleton.GetSinglenton();
            Singleton sin3=Singleton.GetSinglenton();
            System.out.println(sin1);
            System.out.println(sin2);
            System.out.println(sin3);
        }
    }
    

    굶 주 린 사람 식 과 게으름뱅이 식 의 차이
    굶 주 린 한식: 클래스 를 불 러 올 때 이미 실례 화 된 조작 이 생 겼 다. 게으름뱅이 식: 클래스 대상 에 처음 적응 할 때 만 실례 화 된 대상 을 만 드 는 조작 이다.일반적으로 우 리 는 굶 주 린 한식 단 례 모델 을 사용 하지만 게 으 른 단식 단 례 모델 을 사용 하지 않 는 다. 게 으 른 한식 단 례 모델 이 다 중 노선 에 있 을 때 노선 안전 문제 가 발생 하기 때문이다. 내 가 왜?저도 잘 모 르 겠 어 요. 제 가 다 중 스 레 드 를 배 운 다음 에 이 구 덩이 를 메 우 겠 습 니 다. ~ ~ ~ 하지만 이중 가속 단일 모델 이 게으름뱅이 단일 모델 이라는 구 덩이 를 해결 할 수 있다 는 것 을 알 고 있 습 니 다. 관심 이 있 는 동 화 는 먼저 단일 모델 의 특징 을 알 수 있 습 니 다. 구조 방법 이 민영화 되 고 외부 에서 새로운 정례 화 대상 이 생 길 수 없 으 며 static 방법 으로 만 정례 화 대상 을 얻 을 수 있 습 니 다.
    다 중 설계 모드
    무엇이 여러 가지 디자인 모델 입 니까?일주일 수의 종 류 를 설명 하 라 고 요구 하면 일곱 개의 대상 만 있 을 수 있다.성별 을 묘사 하 는 종 류 는 두 개 밖 에 없다.이것들 은 모두 여러 가지 디자인 모델 에 속한다.다 례 란 단 례 보다 내부 실례 화 대상 이 더 많이 추 가 돼 생 겼 을 뿐이다.범례: 성별 다 중 디자인 모델 실현
    class Sex{
        private String title;
        public static final int MALE_FLAG=1;
        public static final int FEMALE_FLAG=2;
        private static final Sex MALE=new Sex(" ");
        private static final Sex FEMALE=new Sex(" ");
        private Sex(String title){
            this.title=title;
        }
        public static Sex GetSex(int sex) {
           switch (sex) {
               case 1:
                   return MALE;
               case 2:
                   return FEMALE;
                   default:
                       return null;
           }
        }
        public String toSting(){
            return this.title;
        }
    }
    public class Test {
        public static void main(String[] args) {
           Sex male=Sex.GetSex(Sex.MALE_FLAG);
            System.out.println(male.toSting());
        }
    }
    

    여러 사례 든 한 사례 든 모두 공 통 된 특징 이 있 습 니 다. 1. 구조 방법 민영화 2. 클래스 내 부 는 반드시 하나의 static 방법 을 제공 하여 예화 대상 의 정 리 를 얻 을 수 있 습 니 다. 단일 사례 와 여러 사례 의 코드 는 우리 가 작성 할 확률 이 높 지 않 지만 코드 결과 에 대해 우 리 는 반드시 잘 알 아야 합 니 다. 특히 단일 사례 디자인 을 해 야 합 니 다.여러 가지 디자인 모델 에서 우 리 는 먼저 개념 을 이해 하고 이 개념 은 이미 매 거 진 것 으로 대체 되 었 다.

    좋은 웹페이지 즐겨찾기