IOC의 생각

  1. IOC의 이론적 배경

우리는 모두 객체로 구성된 기본 구현 Ñ 출신 객체 지향 소프트웨어 설계 방법,에, 모두가 상호 협력을 통해 개체를 알고, 시스템의 궁극적으로 비즈니스 로직.
그림 삽입 설명 여기

기계식 시계 커버 유사한 위의 경우와 유사하게 볼 수이고, 각각의 기어 이에 다이얼 정확한 시간을 제조시, 분 및 초 손 시계 방향으로 회전 구동된다. .도 1의 예는 기어 세트를 설명하고, 그 각각의 복수의 기어를 가지며, 서로 함께 작업 맞물린 기어는 공통의 작업을 수행한다. 우리는 문제가있는 경우 이러한 기어 세트, 기어, 그것은 전체 기어 세트의 정상적인 작동에 영향을 미칠 수 있음을 볼 수있다

기어 세트 사이의 결합은 개체 간의 결합은 시스템 소프트웨어와 매우 유사하다. 객체 사이의 커플 링은 어떤 불가피하고 필요한 공동 작업을위한 기초 . 이제 점점 더 큰 규모의 산업 응용 프로그램과 함께, 객체 사이의 의존성이 점점 더 복잡해지고, 종종있을 것 객체 사이에 여러 종속성을 따라서, 시스템 분석을위한 건축가와 디자이너와 디자인은 더 큰 도전에 직면하게 될 것이다. 객체 사이에 시스템을 결합하는 것은 너무 높으면, 상황은 신체의 피할 수에 영향을 줄 참이다.

그림 삽입 설명 여기

커플 링 관계는 객체 사이에 표시되지 않으며 객체뿐만 아니라 소프트웨어 및 하드웨어 시스템 사이의 소프트웨어 시스템의 모듈 사이에 나타납니다. 어떻게 모듈 사이와 객체 사이의 결합, 시스템 간 감소하는 것은 소프트웨어 공학의 목표의 영원한 추구 중 하나입니다. 너무 높은 문제를 객체 사이의 커플 링을 해결하기 위해, 마이클 매트 슨 소프트웨어 전문가가 객체 사이의 "감"을 달성하기 위해, IOC 이론을 제안, 현재의 이론이 성공적으로 실천에 적용되어, 봄

2. 제어의 반전 (IOC의) 무엇
IOC는 제어 글자의 반전이다 "역 제어"또는로 번역 대부분의 "제어의 반전"로 번역 된 책, 어떤 책 "거꾸로 제어 할 수 있습니다."
1996 년, 마이클 매트 슨은을 탐험 할 수있는 객체 지향 프레임 워크에 대한 문서에서 먼저 IOC의 개념을 제안했다. 객체 지향 설계 및 프로그래밍의 기본 개념을 위해, 우리는 이미 많이 이야기했고, 반복하지, 짧은에, 객체의 협력 상호 작용으로 복잡한 시스템을 파괴하는 것입니다, 이러한 객체 클래스 패키지의 채택 후, 내부 구현은 외부에 투명 하여 문제 해결의 복잡성뿐만 아니라 유연성을 감소시키는 것은 재사용하고보기의 확장 .IOC 이론 포인트는 다음과 같이 대략 제기 :는 "타사"달성의 수단으로 종속성이 객체 간의 아래와 같이 :
그림 삽입 설명 여기우리는 시스템 보면 다음 제거 위의 그림 사이의 IOC 컨테이너를 : 테스트에 와서
그림 삽입 설명 여기우리가 지금 우리가 할 수있는 전체 시스템 요구 사항의 전체 내용을 실현하려는 그림을 참조하십시오. 이 때, A는 B, C,이 네 가지 개체 사이의 D는 서로 아무런 연결 관계가 없습니다 접촉없이를 당신이 아프가니스탄을 실현하고, 필요가 B, C 및 D를 고려하는 갈 할 때, 그래서, 오브젝트 간의 종속성을 최소로 감소되었다. 그래서, 한 자신의 클래스의 개발에 참여 각 구성원은 다른 사람들과 어떤 관계없이 달성 될 수있는!

결국 제어 (IOC)의 반전은 왜 우리가 비교와 같은 이름을 재생, 우리가 살펴 보자?

시스템 소프트웨어는도 1에 도시 IOC 컨테이너까지 도입되지 않고, 오브젝트 A는 오브젝트 B에 의존 한 후 초기화 동작의 시점의 객체 A가 또는 그 물체 B를 사용하여 객체를 생성 할 주도권을해야 생성되거나 B.되었습니다 여부를 만들거나 자신의 손에서 객체 B, 컨트롤을 사용하고 있습니다.

IOC 컨테이너의 도입 후 소프트웨어 시스템은 이러한 상황이 완전히 선박, 물체 A와 물체 B에 가입하기 위해 IOC 사이의 직접 링크의 손실로 인해 변경되기 때문에, 물체 A가 필요 객체 B를 실행할 때 IOC 컨테이너는 이니셔티브를 취할 것 필요한 개체 메틸 아세테이트 분사를 배치하는 것을 목적으로 만든다. 전후의 비교 : 액티브 동작으로 종속 객체 B의 오브젝트를 획득하는 과정을 수동 동작, 반전 제어되고, 이것은 "제어 반전"이름의 기원이다.

IOC 별칭 : 의존성 주입 (DI)

IOC의이 그래서 결국, 제어의 반전 때문에 2004 년, 마틴 파울러, 같은 문제에 대해 설명하고, 상세한 분석 및 데모은 "? 그것의 측면이 반전 된 것을 제어"후 "GET : 그는 대답을 얻었다 프로세스는 "제어가 반전 한 후, IOC 컨테이너 능동 주사에 의해 관리되는 그 종속 오브젝트를 획득하는 과정은 그가 그렇게"반전 (종속성 주입 의존성 주입 "보다 적절한 이름이다 받아"를 따라 물체를 역전 ). " 주입 : 그의 대답은, 사실, IOC을 달성하는 방법을 보여줍니다. 동작 중에 IOC 용기 인 이른바 의존성 주입은 동적 의존성 특정 개체에 주입 .

따라서, 의존성 주입 (DI) 및 역방향 제어 (IOC)가 다른 각도에서 동일한 일이 IOC 컨테이너 수단을 도입함으로써, 설명은 오브젝트 간의 디커플링 사출 의존성로서이다.

IOC는 우리에게 어떤 좋은 가져

우리는 어떤 좋은 가져 결국,보다 내장 하드 디스크를 사용하여 USB, USB 외부 장치의 예를 시작?

  • 호스트에 삽입하기 전에 먼저 외부 호스트 컴퓨터 디바이스와 같은 USB 장치와 호스트 컴퓨터는 우리가 접촉이 발생하기 전에 모두 함께 관련된 후에 어떤 관계가 없다. 그래서 상관없이 문제 중 하나를 모두 표시, 다른의 작동에 영향을 미치지 않습니다. 이 기능은 소프트웨어 공학에서 구현되고, 유지 보수 디버깅 및 진단하기 쉽고, 단위 테스트를위한 아주 좋은 좋다. 각 클래스 코드만큼 그들의 함수로서 수정할 수, 즉, 로우 또는 결합 요소 사이에 커플 링 효과를 가져 서로에 대해 서로 독립적으로, 개별적으로 시험 될 수있다.
  • 둘째, USB 장치와 호스트 컴퓨터의 독립 사이뿐만 아니라 다른 혜택, 그 (것)들의 사이에서 전혀 관계가없는 사람, 모든 일을 일, 수 있습니다 메인 프레임 컴퓨터를 생산하는 USB 장치 제조 업체 및 제조업체의 생산을 제공합니다 유일한 필요가 표준 USB 인터페이스를 준수하는 것입니다. 당신의 일, 당신은 혼자 작업을 테스트 할 수 있습니다 다른 사람과는 아무 상관이 없기 때문에 각 개발 팀 구성원 만 자신의 비즈니스 로직을 달성하기 위해 관련 될 필요가 진행중인 사람 일 다른 사람을 걱정 할 필요가 없습니다, 당신은 작업에 의존 할 필요가 없습니다 다른 사람들의 조립, 더 이상 명확한 책임을 당길 필요가 없습니다. 그래서, 중간 크기의 프로젝트 팀 구성원 의 책임의 명확한 구분 명확 , 크게 향상 될 것입니다 작은 작업, 개발 효율성과 제품의 품질에 큰 작업이 될 쉽다.
  • 셋째, 임의의 외부 장치가 USB 가능 장치에 연결 가능한 USB와, 호스트 컴퓨터에 연결 수는 DV 시스템에 연결할 수있는, 외부 USB 장치 일 수있다 반복 사용 . 소프트웨어 공학에서,이 기능이 좋은 재사용, 우리는 공통 구성 요소에게 보편적 인 독립을 가질 수있다, 반복 프로젝트 또는 다른 프로젝트의 다른 부분에 사용
  • 넷째, 외부 USB 장치 모듈은 핫 스왑을 갖는다. IOC는 우리가 매우 간단 될 것입니다 구현 서브 클래스를 교체 할 때 그래서, 그냥 완료, 그것의 구성 파일을 수정하는 것이, 결과 객체가 구성 파일에 정의되어있는 외부 모드에 객체 메소드를 생성 핫 스왑 기능입니다.

원리

우리는 승화 + 싱글의 공장 모델로 볼 모드 IOC 컨테이너를 작동 할 수있는 IOC 컨테이너 공장으로,이 공장은 구성 파일에 주어진 객체 정의를 생성 한 다음 프로그래밍 언어를 사용하는 반사 프로그래밍, 구성 파일에 지정된 해당 객체 클래스 이름을 형성한다. 보기의 구현 관점에서, IOC가 정의하는 구성 파일을 변경하여, 죽은 오브젝트 코드 생성을 작성하는 팩토리 메소드 이전에 넣고, 즉, 공장은 목적은 유연성을 개선하고, 모두 독립적 인 생성에 의해 분리 된 객체 유지 보수. 글로벌 공유 객체 동안

게시 23 개 원래 기사 · 원 찬양 2 · 조회수 928

추천

출처blog.csdn.net/metjoyful/article/details/103394148