디자인 모델 기초 지식

디자인 모델 의 6 대 원칙
1. 개폐 원칙 (Open Close Principle) 개폐 원칙 은 확장 개방, 수정 폐쇄 를 의미한다.프로그램 이 확장 이 필요 할 때 기 존의 코드 를 수정 하여 핫 플러그 효 과 를 실현 할 수 없습니다.쉽게 말 하면 프로그램의 확장 성 이 좋 고 유지 와 업그레이드 가 용이 하도록 하기 위해 서다.이러한 효 과 를 얻 으 려 면 인터페이스 와 추상 류 를 사용 해 야 한다. 뒤의 구체 적 인 디자인 에서 우 리 는 이 점 을 언급 할 것 이다.
2. 리 씨 교체 원칙 (Liskov Substitution Principle) 리 씨 교체 원칙 은 대상 을 대상 으로 디자인 하 는 기본 원칙 중 하나 이다.리 씨 교체 원칙 에 따 르 면 어떤 기류 가 나타 날 수 있 는 곳 이 든 자 류 는 반드시 나타 날 수 있다.LSP 는 계승 재 활용 의 초석 으로 파생 류 가 기 류 를 교체 할 수 있 고 소프트웨어 단위 의 기능 이 영향 을 받 지 않 을 때 만 기 류 를 진정 으로 재 활용 할 수 있 으 며 파생 류 도 기 류 를 바탕 으로 새로운 행 위 를 추가 할 수 있다.리 씨 교체 원칙 은 개폐 원칙 에 대한 보충 이다.개폐 원칙 을 실현 하 는 관건 적 인 절 차 는 추상 화 이 고 기류 와 자 류 의 계승 관 계 는 추상 화의 구체 적 인 실현 이기 때문에 리 씨 교체 원칙 은 추상 화 를 실현 하 는 구체 적 인 절차 에 대한 규범 이다.
3. 역 전 원칙 (Dependence Inversion Principle) 에 의존 하 는 원칙 은 개폐 원칙 의 기초 이 고 구체 적 인 내용: 인터페이스 프로 그래 밍 에 대해 추상 에 의존 하고 구체 에 의존 하지 않 는 다.
4. 인터페이스 격 리 원칙 (Interface Segregation Principle) 은 여러 개의 격 리 인 터 페 이 스 를 사용 하 는 것 이 하나의 인 터 페 이 스 를 사용 하 는 것 보다 좋다 는 뜻 이다.클래스 간 의 결합 도 를 낮 춘 다 는 뜻 도 있다.이 를 통 해 알 수 있 듯 이 디자인 모델 은 대형 소프트웨어 구조 에서 출발 하여 업그레이드 와 유지 에 편리 한 소프트웨어 디자인 사상 으로 의존 도 를 낮 추고 결합 을 낮 추 는 것 을 강조 한다.
5. 디 미트 법칙 은 최소 알 기 원칙 (Demeter Principle) 이 라 고도 부른다. 최소 알 기 원칙 은 한 실체 가 다른 실체 와 상호작용 을 최소 화하 고 시스템 기능 모듈 을 상대 적 으로 독립 시 켜 야 한 다 는 것 을 말한다.6. 합성 재 활용 원칙 (Composite Reuse Principle) 합성 재 활용 원칙 은 계승 이 아 닌 합성 / 취 합 방식 을 사용 하 는 것 을 말한다.
단일 모드:
장점: 단일 모드 는 하나의 대상 만 만 만 들 수 있 기 때문에 메모 리 를 절약 하고 대상 의 접근 속 도 를 가속 화 시 켜 야 합 니 다. 따라서 대상 은 공용 장소 에서 사용 하기에 적합 합 니 다. 예 를 들 어 여러 모듈 이 같은 데이터 소스 연결 대상 을 사용 하 는 등 단점 이 있 습 니 다. 1. 변화 하 는 대상 에 적용 되 지 않 습 니 다. 만약 에 같은 유형의 대상 이 서로 다른 사례 장면 에서 변 화 를 일 으 키 면.단일 사례 는 데이터 오 류 를 일 으 켜 서로의 상 태 를 저장 할 수 없습니다.2. 단일 모드 에 추상 층 이 없 기 때문에 확장 하기 어렵다.3. 단일 직책 이 너무 무 거 워 서 어느 정도 에 단일 직책 에 위배 된다.단일 클래스 는 업무 방법 을 제공 할 뿐만 아니 라 대상 을 만 드 는 방법 (공장 방법) 도 제공 하여 대상 의 생 성과 대상 자체 의 기능 을 결합 시 켰 기 때문이다.응용 장면 1. 사이트 카운터.2. 프로젝트 에서 프로필 을 읽 습 니 다.3. 응용 프로그램의 로그 응용.4. 집합 정렬 시 별도의 정렬 (compare) 클래스 를 쓴다.정렬 클래스 는 단일 모드 를 사용 합 니 다.
실현 방식: 흔히 볼 수 있 는 단일 모델 은 두 가지 생 성 방식 이 있 습 니 다. 이른바 굶 주 린 게으름뱅이 식 과 굶 주 린 게으름뱅이 식 입 니 다. 게으름뱅이 식 은 시스템 로 딩 시 클래스 를 만 들 지 않 고 처음으로 인 스 턴 스 를 사용 할 때 만 듭 니 다.클래스 를 불 러 올 때 클래스 의 단일 예 를 만 들 고 클래스 에 저장 합 니 다.tips: 다 중 스 레 드 에서 단일 모드 모드 를 만 들 려 면 중복 생 성 상황 을 고려 해 야 합 니 다.흔히 볼 수 있 는 해결 방식 은 두 가지 가 있다. a. 이중 잠 금 체 제 를 사용한다.
public class SLHanDanli {
    private static volatile SLHanDanli dl = null;
    private SLHanDanli(){}
    public static SLHanDanli getInstance(){
        if(dl == null){
            synchronized (SLHanDanli.class) {
                if(dl == null){
                    dl = new SLHanDanli();
                }
            }
        }
        return dl;
    }
}

b. 정적 초기 화 기 를 사용 하 는 방식 은 클래스 로 딩 할 때 클래스 의 인 스 턴 스 를 만 듭 니 다. 그러나 우 리 는 인 스 턴 스 의 생 성 디 스 플레이 를 정적 내부 클래스 에 배치 하면 외부 클래스 로 딩 할 때 인 스 턴 스 를 만 들 지 않 습 니 다. 그러면 우리 의 이중 목적: 로 딩 지연 과 스 레 드 안전 을 실현 할 수 있 습 니 다.
public class ClassInnerClassDanli {
    public static class DanliHolder{
        private static ClassInnerClassDanli dl = new ClassInnerClassDanli();
    }
    private ClassInnerClassDanli(){}
    public static ClassInnerClassDanli getInstance(){
        return DanliHolder.dl;
    }
}

https://www.cnblogs.com/restartyang/articles/7770856.html
전략 모드
* * 의도: * * 일련의 알고리즘 을 정의 하여 하나씩 밀봉 하고 서로 바 꿀 수 있 도록 합 니 다. * *주요 해결: * * 여러 가지 알고리즘 이 비슷 한 상황 에서 if... else 를 사용 하면 복잡 하고 유지 하기 어렵 습 니 다. * *언제 사용 할 것 인가: * * 한 시스템 에는 여러 가지 종류 가 있 는데, 그것들 을 구분 하 는 것 은 단지 그들의 직접적인 행위 일 뿐이다. * *어떻게 해결 합 니까: * * 이 알고리즘 들 을 하나의 클래스 로 봉 하여 임의로 교체 합 니 다.약간: 1. 알고리즘 은 자 유 롭 게 전환 할 수 있 습 니 다.2. 다 중 조건 으로 판단 하 는 것 을 피한다.3. 확장 성 이 좋다.단점: 1. 전략 류 가 많아 집 니 다.2. 모든 전략 류 는 대외 적 으로 노출 되 어야 한다.장면 사용: 항목 은 집합 을 정렬 하고 각 정렬 규칙 을 단독 정렬 클래스 로 작성 합 니 다.그리고 사용 할 때 서로 다른 정렬 정책 을 입력 하면 정렬 결과 가 달라 집 니 다.
http://www.runoob.com/design-pattern/strategy-pattern.html https://blog.csdn.net/chenjianandiyi/article/details/79747675
장식 기 모드
장식 기 모드 (Decorator Pattern) 는 기 존의 대상 에 게 새로운 기능 을 추가 하 는 동시에 구 조 를 바 꾸 지 않 습 니 다.이런 유형의 디자인 모델 은 구조 형 모델 로 기 존의 유형의 포장 이다.이 모델 은 기 존의 종 류 를 포장 하고 클래스 방법 서명 의 완전 성 을 유지 하 는 전제 에서 추가 적 인 기능 을 제공 하 는 장식 류 를 만 들 었 다.우 리 는 아래 의 실례 를 통 해 장식 기 모드 의 용법 을 보 여 준다.그 중에서 우 리 는 하나의 모양 을 서로 다른 색깔 로 장식 하 는 동시에 모양 류 를 바 꾸 지 않 을 것 이다.
소개 의도: 대상 에 게 동적 으로 추가 적 인 직책 을 추가 합 니 다.기능 을 증가 시 키 는 데 있어 장식 기 모델 은 하위 클래스 를 생 성 하 는 것 보다 더욱 유연 하 다.주요 해결: 일반적으로 우 리 는 하나의 종 류 를 확장 하기 위해 계승 방식 을 자주 사용 하여 실현 한다. 계승 은 정적 특징 을 도입 하고 확장 기능 이 증가 함 에 따라 하위 종 류 는 팽창 할 것 이다.언제 사용 합 니까?어떻게 해결 합 니까? 구체 적 인 기능 직책 을 구분 하 는 동시에 장식 자 모델 을 계승 합 니 다.핵심 코드: 1. Component 류 는 추상 적 인 역할 을 하고 구체 적 으로 실현 해 서 는 안 된다.2. 수식 류 는 Component 류 를 인용 하고 계승 하 며 구체 적 인 확장 류 는 부모 류 를 다시 쓰 는 방법 입 니 다.응용 사례: 1. 손오공 은 72 변화 가 있 었 다. 그 가 '절' 이 된 후에 그의 근본 은 원숭이 였 지만 그 는 절 의 기능 을 가지 게 되 었 다.2. 한 폭 의 그림 이 있 든 없 든 벽 에 걸 수 있 지만 보통 액자 가 있 고 사실은 액자 가 벽 에 걸 려 있다.벽 에 걸 기 전에 그림 은 유 리 를 가리 고 틀 에 담 을 수 있다.이때 그림, 유리, 액자 가 하나의 물 체 를 형성 했다.장점: 장식 류 와 피 장식 류 는 독립 적 으로 발전 할 수 있 고 서로 결합 되 지 않 으 며 장식 모델 은 계승 하 는 대체 모델 로 장식 모델 은 실현 류 의 기능 을 동적 으로 확장 할 수 있다.단점: 다 층 장식 이 복잡 하 다.사용 필드: 1. 하나의 기능 을 확장 합 니 다.2. 동적 증가 기능, 동적 취소.주의사항: 상속 대신 가능.
에이전트 모드
프 록 시 모드 (Proxy Pattern) 에서 하 나 는 다른 종류의 기능 을 대표 합 니 다.이런 유형의 디자인 모델 은 구조 형 모델 에 속한다.프 록 시 모드 에서 우 리 는 외부 에 기능 인 터 페 이 스 를 제공 할 수 있 도록 기 존 대상 을 만 듭 니 다.
소개 의도: 이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 에이 전 트 를 제공 합 니 다.
주요 해결: 대상 을 직접 방문 할 때 가 져 오 는 문제, 예 를 들 어 방문 할 대상 은 원 격 기계 에 있다.대상 을 대상 으로 하 는 시스템 에서 일부 대상 은 특정한 원인 (예 를 들 어 대상 이 비용 이 많이 들 거나 일부 조작 은 안전 통제 가 필요 하거나 프로 세 스 밖의 방문 이 필요 하 다) 으로 인해 직접 방문 하 는 것 은 사용자 나 시스템 구조 에 많은 번 거 로 움 을 가 져 올 수 있 습 니 다. 우 리 는 이 대상 을 방문 할 때 이 대상 의 방문 층 을 추가 할 수 있 습 니 다.언제 사용 합 니까? 클래스 에 접근 할 때 제어 하고 싶 습 니 다.어떻게 해결 합 니까: 중간 층 을 증가 합 니 다.핵심 코드: 피 에이전트 와 의 조합 을 실현 합 니 다.응용 인 스 턴 스: 1. Windows 의 단축 키.2. 저팔계 가 고 취 란 을 찾 아 갔 더 니 손오공 이 변 했다. 이렇게 이해 할 수 있다. 고 취 란 의 외 모 를 추상 화하 고 고 취 란 본인 과 손오공 이 이 인 터 페 이 스 를 실현 했다. 저팔계 가 고 취 란 을 방 문 했 을 때 이것 이 손오공 인 줄 몰 랐 기 때문에 손오공 은 고 취 란 대리 류 이다.3. 기차 표를 사 는 것 이 꼭 기차 역 에서 사 는 것 이 아니 라 대리 판매 점 에 갈 수도 있 습 니 다.4. 수표 나 은행 예금증서 한 장 은 계좌 중의 자금 의 대리 이다.수 표 는 시장 거래 에서 현금 을 대체 하고 발행인 계좌 에 있 는 자금 에 대한 통 제 를 제공한다.5、spring aop。 장점: 1. 직책 이 뚜렷 하 다.2. 높 은 확장 성.3. 지능 화.중간 층 을 늘 려 업무 디 결합 을 실현 하 다.중간 층 에서 추가 기능 단점 을 할 수 있 습 니 다. 1. 클 라 이언 트 와 실제 주제 사이 에 대리 대상 을 추 가 했 기 때문에 일부 유형의 대리 모델 은 요청 의 처리 속도 가 느 려 질 수 있 습 니 다.2. 대리 모델 을 실현 하려 면 추가 적 인 업무 가 필요 하고 일부 대리 모델 의 실현 은 매우 복잡 하 다.추가 작업 이 증가 하여 속도 가 느 려 질 수 있 습 니 다.사용 장면: 직책 에 따라 구분 하고 보통 다음 과 같은 사용 장면 이 있다. 1. 원 격 대리.2. 가상 에이전트.3. Copy - on - WRite 대리.4. 보호 (Protect or Access) 대리.5. Cache 대리.6. 방화벽 (Firewall) 대리.7. 동기 화 (Synchronization) 에이전트.8. 스마트 참조 (Smart Reference) 에이전트.개발 모델 에서 service 와 dao 성 과 는 정적 에이전트 입 니 다.서비스 층 에이전트 dao 층.주의사항: 1. 어댑터 모드 와 의 차이: 어댑터 모드 는 주로 고려 대상 의 인 터 페 이 스 를 바 꾸 고 프 록 시 모드 는 프 록 시 클래스 의 인 터 페 이 스 를 바 꿀 수 없습니다.2. 장식 기 모델 과 의 차이: 장식 기 모델 은 기능 을 강화 하기 위해 대리 모델 은 통 제 를 하기 위해 서 이다.
https://blog.csdn.net/dean_hu/article/details/71195133

좋은 웹페이지 즐겨찾기