자바 기초 --- 상용 디자인 모델

7486 단어
단일 디자인 모드
  • 굶 주 린 한식: 라인 이 안전 합 니 다. 사전에 new Single () 실례 화 대상 이 되 어 방문 충돌 이 발생 하지 않 지만 효율 이 낮 습 니 다
  • public class Single {
        private static Single single = new Single();//     ,          
        private Single(){//     
        }
        public static Single getInstance(){
            return single;
        }
    }
  • 게으름뱅이 식: 효율 이 높 지만 스 레 드 가 안전 하지 않 습 니 다. 두 개의 비동기 스 레 드 가 동시에 getInstance 방법 에 들어간다 고 가정 하면 새로운 Single 대상
  • 을 만 들 것 입 니 다.
    public class Single {
        private static Single single = null;
        private Single(){
        }
        public static Single getInstance(){
            if(single==null){
                single = new Single();
            }
            return single;
        }
    }
  • 게으름뱅이 식 (즉 안전 도 효율 이 높다)
  • public class Single {
        private static Single single = null;
    
        private Single() {
        }
    
        public static Single getInstance() {
            if (single == null) {
                synchronized (Single.class) {//   ,      
                    if (single == null) {
                        single = new Single();
                    }
                }
            }
            return single;
        }
    }

    PS: 동기 블록 에서 single 이 비어 있 는 지 여 부 를 판단 해 야 하 는 이 유 를 설명 합 니 다. 만약 에 두 개의 스 레 드 AB 가 동기 블록 에 실행 되 고 있다 고 가정 한 다음 에 A 가 들 어 갔 고 B 는 밖에서 기 다 렸 습 니 다. 만약 에 비어 있 지 않 으 면 A 는 Single 인 스 턴 스 를 만 들 었 습 니 다. 나 온 후에 B 는 들 어 갈 수 있 습 니 다. B 는 Single 인 스 턴 스 를 만 들 었 기 때문에 대상 Single 이 너무 많 기 때문에 빈 것 을 판단 해 야 합 니 다
    공장 설계 모델
    단순 공장: 세 부분 으로 구성
  • 구체 적 인 공장 류: 구체 적 인 공장 류 를 핵심 으로 하고 추상 적 인 제품 으로 돌아 가 는 방법 을 정의 하 며 매개 변 수 를 받 아 논리 적 으로 판단 하여 사용자 가 어떤 제품 을 원 하 는 지 판단 한다
  • .
    public class CarFactory {
        public static Car getCar(String Tag){
            switch (Tag){
                case "BMW":
                    return new BMW();
                case "AuDi":
                    return new AuDi();
            }
            return null;
        }
    }
  • 추상 적 인 제품 유형: 제품 의 기본 유형, 결합 감소
  • public abstract class Car {
        //      
    }
  • 구체 적 인 제품 유형: 추상 적 인 제품 을 계승 하고 자신 만 의 방법
  • 을 다시 쓴다.
    public class BMW extends Car {
        //      
    }
    public class AuDi extends Car {
        //      
    }

    공장 방법: 간단 한 공장 의 진일보 한 개선, 네 부분 구성
  • 추상 공장: 추상 공장 을 핵심 으로 하고 추상 제품 으로 돌아 가 는 방법 을 정의 한다
  • public abstract class CarFactory {
        public abstract Car getCar();
    }
  • 구체 적 인 공장: 추상 적 인 공장 을 계승 하고 방법 을 재 작성 하 며 구체 적 인 제품 사례
  • 로 돌아간다.
    public class BmwFactory extends CarFactory {
        @Override
        public Car getCar() {
            return new BMW();
        }
    }
    public class AuDiFactory extends CarFactory {
        @Override
        public Car getCar() {
            return new AuDi();
        }
    }
  • 추상 적 인 제품: 제품 의 기본 유형, 결합 감소
  • public abstract class Car {
        //      
    }
  • 구체 적 인 제품: 추상 적 인 제품 을 계승 하고 자신 만 의 방법 을 다시 쓴다
  • public class BMW extends Car {
        //      
    }
    public class AuDi extends Car {
        //      
    }

    빌 드 모드
  • 정적 내부 클래스 Builder 를 만 듭 니 다. 구성원 변 수 는 외부 클래스 와 마찬가지 로 Builder 는 일련의 변수 할당 이 있 습 니 다. 마지막 으로 Build (Builder build) 방법 이 있 습 니 다. build 의 변 수 를 외부 클래스 의 구성원 변수
  • 에 부여 합 니 다.
  • 복잡 한 대상 의 일치 성과 유연성 을 예화 시 켰 고 사용 방법 순서 가 다 르 면 서로 다른 결 과 를 얻 을 수 있 는 장소 에 사용 하기에 도 적합 하 다. 간단 한 예
  • 좋은 웹페이지 즐겨찾기