디자인 모델 사고: 의존

4861 단어 디자인 모드
몇 가지 디자인 모델 을 연구 한 후에 한 명사 에 대한 의미 가 점점 뚜렷 해 지 는 것 을 발견 했다. 이 명 사 는 바로 의존 이다.
의존, 나의 이 해 는 어떤 기능 을 실현 하기 위해 서 당신 은 이미 이 코드 에 의존 하기 시작 했다 는 것 이다.예 를 들 어 아래 의 간단 한 몇 마디 코드:

  
  
<? php

$str = ' First ' ;

$str = strtolower ( $str );

echo $str ;

?>

//
// first

간단 한 몇 마디 코드 도 몇 가지 의존 이 존재 합 니 다. 첫 번 째 줄 의 할당 문 구 는 고정된 문자열 을 변수 $str 에 부여 합 니 다.두 번 째 줄 은 변수 $str 를 모두 소문 자로 바 꾸 고 strtolower 함수 에 의존 하 며 세 번 째 줄 은 인쇄 이 며 echo 에 의존 합 니 다.이제 하나씩 분석 해 보 겠 습 니 다.
우선, 첫 번 째 줄 은 $str 가 등호 뒤의 'First' 에 의존 하기 때문에 고정 되 어 실행 할 때 바 뀌 기 어렵 습 니 다. 이것 이 바로 의존 입 니 다.
그 다음 에 두 번 째 줄 에서 우 리 는 함수 strtolower 에 의존 하여 변수 $str 의 모든 자 모 를 소문 자로 바 꿉 니 다. 이때 우리 의 수 요 는 문자열 을 소문 자로 바 꾸 는 것 이 고 이 함 수 는 시스템 에서 제공 하 는 것 이기 때문에 이때 의 의존 도 는 매우 믿 을 수 있 고 변화 가 크 지 않 습 니 다.
마지막 으로, 우 리 는 echo 로 이 문자열 을 인쇄 하 는 것 을 선택 했다. 이것 은 인쇄 기능 만 실현 할 수 있 고, 다른 시스템 에 호출 을 제공 하려 면 실현 할 수 없다.
여기 에는 약간의 의존 이 있 지만 그 중에서 믿 을 만 한 의존 (두 번 째 줄) 과 믿 을 수 없 는 의존 (첫 번 째 줄, 세 번 째 줄) 이 있다.그리고 우리 의 현실 생활 에서 변 화 는 불가피 하 다. 믿 을 수 없 는 의존 으로 인해 시스템 을 유지 하기 어 려 울 것 이다. 예 를 들 어 제 가 입력 한 문자 에 따라 서로 다른 소문 자 문 구 를 얻 으 려 면 'First' 를 바 꿔 야 한다. 물론 여기 서 간단 한 두 마디 말 은 변동 이 쉬 워 보이 기 때문에 모두 괜찮다 고 생각 하고 고치 면 된다.그러나 이 말 이 시스템 전체 와 관련 이 있다 면 이 변경 은 재앙 이 될 가능성 이 높다.예 를 들 어 두 번 째 문장의 strtolower 함 수 는 시스템 에서 여러 번 호출 (이 함수 에 의존 하 는 곳 이 많다) 하면 만약 에 이 함수 가 바 뀔 수 있다 (가설 이나 여기 서 자신 이 쓴 함수 로 바 꿀 수 있다) 면 시스템 전체 에 오류 가 발생 하거나 마 비 될 것 이다.그래서 우리 가 프로그램 을 쓸 때 우리 의 의존 은 가장 믿 을 만 한 것 이 고 믿 을 만 한 것 은 무엇 입 니까?그것 은 추상 이 고 인터페이스 다!왜 일 까요?예 를 들 어 생활 속 에서 인터넷 을 하고 싶 을 때 컴퓨터 를 찾 아 인터넷 을 해 야 한다. 그러면 이 컴퓨터 에 의존 하 게 된다. 만약 에 이 컴퓨터 가 고장 나 면 이 럴 때 인터넷 에 접속 할 수 없 을 것 이다. 그러나 만약 에 컴퓨터 로 인터넷 을 해 야 한다 면 (물론 현실 생활 에서 가상 컴퓨터 로 인터넷 을 할 수 없다) 이 럴 때 는 문제 가 없다.왜 냐 면 컴퓨터 는 인터넷 에 사용 되 는 것 이기 때 문 입 니 다. 이것 은 그의 기본 적 인 기능 입 니 다. 이것 은 추상 적 인 것 입 니 다. 모든 컴퓨터 가 이 기능 을 실현 해 야 합 니 다. 그래서 만약 에 제 가 컴퓨터 로 인터넷 에 접속 하 겠 다 고 하면 이것 은 틀림 없습니다. (어느 해 에 컴퓨터 가 인터넷 에 사용 할 수 없 는 것 을 제외 하고 이것 은 불가능 한 것 같 습 니 다) 이것 은 바로 추상 에 의존 하 는 것 입 니 다.이것 은 바로 신뢰 할 수 있 는 것 이다. 왜냐하면 인 터 페 이 스 를 정의 하기 때문이다. (인 터 페 이 스 는 하나의 협의 이 고 이 인 터 페 이 스 를 실현 하려 면 반드시 이 협 의 를 따라 야 한다.) 그리고 그 어떠한 행위 도 사용 하지 않 기 때문에 실 수 를 하지 않 는 다. 이것 이 바로 우리 가 흔히 말 하 는 추상 에 의존 하 는 이유 이다.
방금 언급 한 컴퓨터 로 인터넷 에 접속 하 는 이 일 은 만약 에 당신 이 자신의 컴퓨터 로 인터넷 에 접속 하 는 것 을 선택한다 면 만약 에 그것 이 고장 나 면 인터넷 에 접속 할 수 없다. 이것 이 바로 의존 하 는 문제 입 니 다. 이때 우리 가 의존 하 는 대상 을 옮 기 면 우 리 는 다른 대상 으로 옮 겨 서 당신 에 게 컴퓨터 를 제공 할 수 있 는 곳 입 니 다. 예 를 들 어 당신 의 회사 등 입 니 다.일반적으로 회 사 는 당신 에 게 인터넷 을 할 수 있 는 컴퓨터 를 제공 할 수 있 습 니 다. 실수 하지 않 습 니 다. 이 럴 때 당신 은 구체 적 인 컴퓨터 에 의존 하지 않 습 니 다. 당신 의 의존 대상 은 회사 로 이전 되 었 습 니 다. 그리고 그것 은 당신 의 컴퓨터 보다 훨씬 믿 을 수 있 습 니 다. 이것 은 바로 주입 에 의존 하 는 것 입 니 다. 즉, 당신 이 특정한 자원 을 사용 하고 싶 을 때 당신 은 주동 적 으로 그 대상 을 얻 는 것 이 아 닙 니 다.다른 용기 로 제공 하면 이 대상 에 대한 의존 도 를 접 할 수 있 고 이 용 기 는 상대 적 으로 믿 을 수 있 으 며 결합 을 해제 하 는 목적 을 달성 하면 유연성 이 더욱 강해 집 니 다.
작업 방법 공장 모델: 이 는 특정한 대상 에 대한 의존 을 공장 으로 옮 기 고 공장 에서 이 를 만 드 는 방법 을 제공 합 니 다. 마치 상기 컴퓨터 가 인터넷 에 접속 해 야 하 는 예 와 같이 디 결합 의 목적 을 달성 합 니 다.
명령 모드: 구체 적 인 방법, 행위 에 대한 의존 을 invoker 의 execute 방법 에 대한 의존 으로 옮 깁 니 다. 그러면 모든 command 대상 으로 추상 화 된 행 위 는 invoker 에 의 해 실 행 될 수 있 습 니 다.
전략 모델: 특정한 대상 의 특정한 방법 에 대한 의존 내 부 를 이전 하 는 것 이다. 이 방법 은 서로 다른 실현 자 에 따라 구체 적 인 방법 을 실현 할 수 있다. 그러면 이 대상 은 특정한 방법 에 문제 가 있 을 때 머리 가 아 프 지 않 고 쉽게 바 꿀 수 있다.
외관 모드: 하위 시스템 에 대한 의존 을 고 층 구성 요소 로 옮 기 는 것 입 니 다. 우 리 는 하위 시스템 의 복잡 한 기능 을 이해 할 필요 가 없습니다. 고 층 구성 요소 와 만 접촉 하면 됩 니 다.
이것 이 바로 제 가 정리 한 의존 에 관 한 지식 입 니 다. 여러분 들 이 의견 이 있 고 문제 가 있 으 면 토론 을 많이 하 시기 바 랍 니 다.

좋은 웹페이지 즐겨찾기