디자인 모델 인 단일 직책 원칙 에 깊이 들 어가 기 쉽다.
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) 수요 가 변 경 될 때 단일 직책 원칙 이 합 리 적 으로 지 켜 지면 해당 기능 의 영향 을 낮 출 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.