디자인 모델 인 단일 직책 원칙 에 깊이 들 어가 기 쉽다.

2483 단어
1. 단일 직책 원칙 소개
2. 단일 직책 원칙 을 코드 로 보 여 준다.
3. 총화
1. 단일 직책 원칙 소개 정의: 한 가지 유형 에 있어 그 변 화 를 일 으 키 는 원인 만 있어 야 한다.한 가지 직책 만 맡 는 다 는 얘 기다.
문제 설명: 우리 가 자바 웹 을 처음 배 웠 을 때 MVC 모드 를 배우 지 않 았 기 때문에 자 연 스 럽 게 doGet () / doPost () 방법 에 각종 코드 를 추 가 했 습 니 다. 업무 논리 코드 도 있 고 sql 을 연결 하 는 코드 도 있 습 니 다. 이것 은 모든 수요 가 변경 되 더 라 도 우 리 는 이 방법 을 변경 해 야 한 다 는 것 을 의미 합 니 다. 이것 은 매우 나 쁜 것 입 니 다. 유지 가 매우 번 거 롭 습 니 다.확장 성도 부족 하 다.
해결 방법: MVC 는 하나의 직책 의 표현 이다. Controller 층 은 구체 적 인 업무 모듈 절차 에 대한 통 제 를 책임 지고 Service 층 은 주로 업무 모듈 의 논리 응용 디자인 을 책임 지 며 Dao 층 은 주로 데이터 지구 층 의 업 무 를 한다.
2. 단일 직책 원칙 을 코드 로 보 여 준다.
현재 필요 한 V 1.0 이 있다 고 가정 합 니 다. 저 희 는 지금 사용자 의 정 보 를 얻 으 려 면 평소에 개발 한 mapper 를 사용 하여 조회 하면 됩 니 다.
public User getInfo(){
    User user = userMapper.getById(UserUtil.getCurrentUser().getId());
    return user;
}

현재 이 방법 은 단일 직책 원칙 에 부합 되 지만 우리 의 수 요 는 변경 되 었 다.
수요 V 2.0: 현재 마이크로 서비스 개발 이기 때문에 저 희 는 GET 요청 을 사용 하여 한 서비스 에서 추가 정 보 를 얻 고 전단 으로 돌아 가 야 합 니 다.

public User getInfo(){
    User user = userMapper.getById(UserUtil.getCurrentUser().getId());

    ExtraMsg extraMsg = HttpRequest.get("/get/user/info")
        .body(JSONObject.toJSONString(user.getId()))
         .execute().body();
    user.setExtraMsg(extraMsg);
    return user;
}

이때 이 방법 은 두 가지 직책 을 포함한다. 직책 1: user 기본 정보 직책 2: get 요청 을 호출 하고 추가 정 보 를 얻 은 다음 에 user 정 보 를 설정 하도록 한다.
이른바 직책 확산, 직책 확산 이란 어떤 이유 로 한 직책 만 맡 는 유형 이 더 많은 직책 을 맡아 야 하기 때문이다.
제 가 든 예 는 간단 하지만 실제 장면 은 더욱 복잡 할 수 있 습 니 다. 만약 에 다른 유형 이 추가 정 보 를 얻 는 방법 을 사용 해 야 한다 면 다시 한 번 써 야 하고 단일 직책 원칙 을 위반 해 야 합 니 다. 이때 우 리 는 이 를 직접 벗 겨 내 는 것 이 좋 습 니 다. 모든 방법 은 하나의 직책 만 책임 집 니 다.
해결 방법: get 요청 방법 을 박리 합 니 다.

public User getInfo(){
    User user = userMapper.getById(UserUtil.getCurrentUser().getId());

    ExtraMsg extraMsg = getExtraMsg(user.getId());
    user.setExtraMsg(extraMsg);
    return user;

public ExtraMsg getExtraMsg(String userId){
    return HttpRequest.get("/get/user/info")
        .body(JSONObject.toJSONString(user.getId()))
         .execute().body();
}

3. 만약 에 한 가지 (방법) 가 맡 은 직책 이 너무 많 으 면 이런 직책 을 결합 시 키 고 수요 가 변화 할 때 디자인 은 예상 치 못 한 파 괴 를 당 하 는 것 과 같다. 그래서 우 리 는 직책 을 발견 하고 직책 을 분리 해 야 한다. 그러면 이런 (방법) 은 하나의 직책 만 있다.
단일 직책 원 의 장점 에 따 르 면 1) 유형의 복잡 도 를 낮 추고 코드 의 가 독성 을 높 일 수 있다. 직책 이 줄 어 들 기 때문에 논리 와 가 독성 은 여러 가지 직책 보다 훨씬 간단 할 것 이다.2) 수요 가 변 경 될 때 단일 직책 원칙 이 합 리 적 으로 지 켜 지면 해당 기능 의 영향 을 낮 출 수 있다.

좋은 웹페이지 즐겨찾기