대상 프로그래밍 의존 주입 상세

의존 주입
대상을 대상으로 프로그래밍을 할 때, 우리가 자주 처리하는 문제는 바로 결합을 해결하는 것이다. 프로그램의 결합성이 낮을수록 이 프로그램의 가독성과 유지보수성이 높다는 것을 나타낸다.제어 반전(Inversion of Control 또는 IoC)은 흔히 사용하는 대상을 대상으로 프로그래밍하는 디자인 원칙이다. 이 원칙을 사용하면 우리는 결합성을 낮출 수 있다.그 중에서 의존 주입은 반전을 제어하는 데 가장 자주 사용하는 실현이다.
의존
의존은 프로그램에서 흔히 볼 수 있는 현상이다. 예를 들어 클래스 Car에서GasEnergy류의 실례energy를 사용했다. 일반적인 방법은 Car류에서GasEnergy류의 실례를 현저하게 만들고energy에 값을 부여하는 것이다.아래 코드

interface Energy {
   
}
 
class GasEnergy implements Energy {
   
}
 
class Car {
 Energy energy = new GasEnergy();
}
문제가 있다
클래스카는 여분의 책임을 지고 에너지 대상의 창설을 책임진다. 이것은 반드시 심각한 결합성이 존재한다.현실의 예를 들어 자동차 한 대가 어떤 에너지를 사용하는지는 자동차가 아니라 자동차 제조업체(CarMaker)가 결정하는 것이 자동차 제조업체의 책임이다.
확장성, 만약에 우리가 에너지를 전동력으로 수정하고 싶다면 우리는 반드시 Car라는 종류를 수정해야 한다. 이것은 개방폐합 원칙에 현저히 부합되지 않는다.
단원 테스트에 불리하다.
의존 주입
의존 주입은 이러한 행위로 클래스 카에서 가스에너지 대상을 주동적으로 만들지 않고 외부에서 가스에너지 대상 형식으로 전송하여 의존을 설정한다.자주 사용하는 의존 주입에는 다음과 같은 세 가지 방식이 있다
구조기 주입
필요한 의존을 구조 방법의 매개 변수로 전달하여 의존 주입을 완성합니다.

class Car {
 Energy mEnergy;
 public Car(Energy energy) {
   mEnergy = energy;
 }
}
Setter 메소드 주입
setter 방법을 추가하면 매개 변수가 주입해야 하는 의존도 주입을 완성할 수 있습니다.

class Car {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}
인터페이스 주입
인터페이스 주입은 그 이름을 들으면 알 수 있듯이 의존 주입을 위해 인터페이스를 만들고 의존은 매개 변수로 전송되며 통일된 인터페이스를 호출하여 구체적으로 실현된 의존 주입을 완성한다.

interface EnergyConsumerInterface {
 public void setEnergy(Energy energy);
}
 
class Car implements EnergyConsumerInterface {
 Energy mEnergy;
   
 public void setEnergy(Energy energy) {
   mEnergy = energy;
 }
}
인터페이스 주입과 setter 방법 주입과 유사하다. 서로 다른 것은 인터페이스 주입은 통일된 방법으로 주입을 완성했고 setter 방법 주입 방법의 명칭은 상대적으로 자유롭다.
프레임 선택
의존 주입에는 많은 프레임워크가 있는데 가장 유명한 것은 Guice입니다. 물론 Spring도 의존 주입을 지원합니다.Guice는 실행할 때 주석을 읽고 반사 형식으로 의존을 생성하여 주입합니다.이런 형식은 안드로이드 모바일 기기에 적합하지 않다. 왜냐하면 이런 조작은 모두 실행할 때 처리되기 때문에 성능에 대한 요구가 비교적 높기 때문이다.
Dagger는 Android가 개발하기에 적합한 의존 주입 라이브러리로 클래스 주해의 형식을 사용하지만 다른 것은 컴파일할 때 보조 클래스를 생성하고 실행할 때 생성된 보조 클래스를 사용하여 의존 주입을 완성하는 것이다.
쓸까 말까
사실 주입 프레임워크를 사용하든 사용하지 않든 하나의 문제이다. 만약에 프레임워크를 사용한다면 팀 모든 사람에게 설명을 준수하여 코드를 작성하여 주입에 의존하는 것을 해결해야 한다.그러나 이런 틀도 쉽게 착수할 수 있는 것이 아니라 학습 계수가 상대적으로 복잡하고 파악하기 어려운 것도 고려해야 할 문제이다.
개인적인 관점은 추천하지 않고 이런 프레임워크를 사용하는 것을 반대하지 않는다. 그러나 때때로 우리는 하나의 프레임워크에 희망을 걸고 평소보다 이런 문제에 주의하는 것이 낫다고 생각한다. 인위적으로 피하는 것은 언제 자신에 대한 기본적인 요구가 아니겠는가?
검색 의존
의존 검색은 의존 주입과 마찬가지로 제어 반전 원칙의 구체적인 실현에 속한다. 의존 주입의 수동적인 수용과 다르다. 의존 검색은 주동적인 요청이다. 필요할 때 프레임워크가 제공하는 방법을 호출하여 대상을 얻고 얻을 때 관련 설정 문서 경로, 키 등 정보를 제공하여 대상을 얻는 상태를 확정해야 한다.
이상은 주입에 의존하는 자료에 대해 상세하게 소개하고 후속적으로 관련 자료를 계속 보충합니다. 본 사이트에 대한 지지에 감사드립니다!

좋은 웹페이지 즐겨찾기