먼저 의존성은 무엇입니까? 예를 들어 var d=new Date();는 d가 Date 객체 생성에 의존한다는 것을 의미합니다. 아니요 프로그램의 낮은 결합도를 달성하려면 구성 요소 간의 상호 의존성과 제약 조건을 최소화하는 것이 좋습니다. 예를 들어 생성자가 다른 사람에 의해 생성된 경우 다시 생성하지 않고 직접 호출할 수 있습니다. 셋째, 주사란 무엇인가요? 내가 지금 사용하고 있는 물건이 타인에 의해 주어지고 수동적으로 만들어졌다는 뜻이다. 예를 들어
으아악
제어 반전: 역전이란 정확히 무엇인가요? Wikipedia의 정의는 종속 개체의 획득이 반전된다는 것입니다. 애플리케이션은 일반적으로 많은 개체로 구성됩니다. 하나의 클래스에 다른 많은 클래스를 사용해야 합니다. 처음에는 new 키워드를 통해 다른 클래스의 인스턴스를 확보하는 데 앞장섰습니다. 이로 인해 문제가 발생합니다. 각 클래스의 호출 관계가 결합됩니다. 제어 역전을 사용하면 Spring이 클래스 인스턴스를 우리에게 주입할 때까지 수동적으로 기다리기만 하면 되며 이를 직접 사용할 수 있습니다.
이것은 객체의 중앙 집중식 관리, 많은 싱글톤을 직접 구현할 필요가 없음, 클래스 호출 관계 분리 등 많은 이점을 제공합니다. 두 개의 클래스 A와 B가 있다고 가정합니다.
와 같은 문이 A에서 사용되는 경우 B에서 A로 유향 가장자리를 추가합니다. 더 큰 프로젝트에는 수천 개의 클래스가 있을 수 있으며 이러한 방식으로 형성된 방향성 그래프는 확실히 매우 복잡할 것입니다. 제어 역전이 사용되면 가장 극단적인 경우 모든 클래스가 독립 포인트가 됩니다.
데이터베이스 연결 객체를 얻을 수 있는 정적 메소드인 get_db()가 있는 데이터베이스 클래스 db가 있습니다. 데이터베이스를 조작해야 하는 클래스 포스트가 있고, 쿼리가 필요한 get_post() 메소드가 있습니다. 데이터베이스 연결은 공개 작업이므로 post 클래스는 결합을 피하기 위해 내부적으로 데이터베이스에 다시 연결하는 것을 원하지 않습니다. 따라서 post 클래스는 데이터베이스 연결 개체를 얻기 위해 set_db() 메서드를 제공합니다. get_db()는 post 클래스의 set_db() 역할을 합니다. 이 메서드의 매개변수는 종속성 주입인 post 클래스에 전달됩니다.
으아악
아래 작성 방법과 비교해보면 종속성 주입은 실제로 완전히 OOP인 일부 언어에 대한 패치라는 것을 알 수 있습니다.
이미 작성된 것들은 사용할 준비가 되었습니다!
먼저 의존성은 무엇입니까? 예를 들어 var d=new Date();는 d가 Date 객체 생성에 의존한다는 것을 의미합니다. 아니요 프로그램의 낮은 결합도를 달성하려면 구성 요소 간의 상호 의존성과 제약 조건을 최소화하는 것이 좋습니다. 예를 들어 생성자가 다른 사람에 의해 생성된 경우 다시 생성하지 않고 직접 호출할 수 있습니다.
셋째, 주사란 무엇인가요? 내가 지금 사용하고 있는 물건이 타인에 의해 주어지고 수동적으로 만들어졌다는 뜻이다. 예를 들어
으아악
차이는 없고 각도만 다를 뿐 모두 같은 내용을 지칭합니다. 간단히 말해서, 객체를 직접 만들 필요가 없습니다. Spring은 객체를 필요한 곳에 배치하는 데 도움이 됩니다
공장모델을 승화한 것일 뿐입니다.
종속성 주입과 제어 코드의 반전 원칙은 동일하지만 이해가 다를 뿐입니다.
이 용어는 실제로 너무 고급 용어이므로 많은 친구들을 혼란스럽게 하는 기본적인 객체 지향 응용 프로그램입니다.
전략 패턴, 팩토리 패턴과 동일합니다.
다음을 참조하세요: http://www.nowcoder.com/questionTerminal/3be16186465a453f876729acd2e46ddf
종속성 주입과 제어 역전은 본질적으로 차이가 없지만, 문제를 설명하는 관점이 다릅니다.
제어 반전:
역전이란 정확히 무엇인가요? Wikipedia의 정의는 종속 개체의 획득이 반전된다는 것입니다.
애플리케이션은 일반적으로 많은 개체로 구성됩니다. 하나의 클래스에 다른 많은 클래스를 사용해야 합니다. 처음에는 new 키워드를 통해 다른 클래스의 인스턴스를 확보하는 데 앞장섰습니다. 이로 인해 문제가 발생합니다. 각 클래스의 호출 관계가 결합됩니다. 제어 역전을 사용하면 Spring이 클래스 인스턴스를 우리에게 주입할 때까지 수동적으로 기다리기만 하면 되며 이를 직접 사용할 수 있습니다.
이것은 객체의 중앙 집중식 관리, 많은 싱글톤을 직접 구현할 필요가 없음, 클래스 호출 관계 분리 등 많은 이점을 제공합니다. 두 개의 클래스 A와 B가 있다고 가정합니다.
와 같은 문이 A에서 사용되는 경우 B에서 A로 유향 가장자리를 추가합니다. 더 큰 프로젝트에는 수천 개의 클래스가 있을 수 있으며 이러한 방식으로 형성된 방향성 그래프는 확실히 매우 복잡할 것입니다. 제어 역전이 사용되면 가장 극단적인 경우 모든 클래스가 독립 포인트가 됩니다.spring은 IoC와 AOP를 기반으로 구축되었습니다.
new B()
데이터베이스 연결 객체를 얻을 수 있는 정적 메소드인 get_db()가 있는 데이터베이스 클래스 db가 있습니다.
으아악데이터베이스를 조작해야 하는 클래스 포스트가 있고, 쿼리가 필요한 get_post() 메소드가 있습니다.
데이터베이스 연결은 공개 작업이므로 post 클래스는 결합을 피하기 위해 내부적으로 데이터베이스에 다시 연결하는 것을 원하지 않습니다. 따라서 post 클래스는 데이터베이스 연결 개체를 얻기 위해 set_db() 메서드를 제공합니다. get_db()는 post 클래스의 set_db() 역할을 합니다. 이 메서드의 매개변수는 종속성 주입인 post 클래스에 전달됩니다.
으아악
아래 작성 방법과 비교해보면 종속성 주입은 실제로 완전히 OOP인 일부 언어에 대한 패치라는 것을 알 수 있습니다.