>  기사  >  Java  >  종속성 역전의 Java 설계 원칙은 무엇입니까?

종속성 역전의 Java 설계 원칙은 무엇입니까?

PHPz
PHPz앞으로
2023-05-12 21:10:04799검색

종속성 역전 소개

우리는 프레임워크 개발 과정에서 종속성 역전, 종속성 역전, 제어 역전, 종속성 주입, IOC 등의 용어를 자주 듣습니다. 이러한 용어는 개발 시 종속성 역전 원칙과 관련이 있습니다. 관련된 용어를 살펴보겠습니다.

  • Inversion of Control(IOC)은 Spring 인터뷰에서 기본적으로 묻는 질문입니다. IOC는 반드시 Spring의 기능은 아닙니다. Spring은 IOC를 사용하는 기본 프레임워크입니다. 이전에는 비즈니스 코드가 중복되어 권한을 완전히 제어해야 할 때 더 문제가 있었습니다. 어쨌든 이는 개발자가 일부 디자인 패턴을 사용하여 관계를 기반으로 개발되지 않는다는 의미입니다. 구현해야 하는 기능이 프로그램에 의해 제어됩니다. (DI) 전체 이름은 종속성 주입입니다. 간단히 이해하면 작동해야 하는 개체는 생성 메서드, get/set 및 인터페이스를 통해 구성되며, 전달된 외부 개체를 통해 새 개체를 주입합니다. Spring은 사용하기 더 좋은 프레임워크입니다.

  • 종속성 역전 원칙(DIP), 전체 이름은 종속성 역전 원칙입니다. 역전 원칙의 의미는 다음과 같습니다.

    고수준 모듈은 의존해서는 안 됩니다. 저수준 모듈. 상위 모듈과 하위 모듈은 추상화를 통해 서로 의존해야 합니다. 또한 추상화는 추상화
  • ;
  • 모듈 개념

우리가 흔히 높은 모듈이라고 부르는 것과 낮은 모듈이 무엇을 의미하는지에 따라 달라지는 특정 구현 세부 사항에 의존해서는 안 됩니다. 그릴 때 관계를 어떻게 구별하거나 표시합니까?

종속성 역전의 Java 설계 원칙은 무엇입니까?

간단히 말하면

호출 체인에서 호출자는 높은 수준에 속하고 호출 수신자는 낮은 수준
에 속합니다. 이러한 설계가 사용되는 이유는 무엇입니까? 근본 원인은 느슨한 결합입니다. 그렇지 않으면 상위 수준 모듈이 하위 수준 모듈에 강력하게 바인딩되어 상위 수준 모듈이 기본 모듈의 코드에 영향을 받지 않습니다. 실제 시나리오에서 이 규칙을 따르는 것이 완전히 필요합니까? 일반적인 예를 살펴보겠습니다.

MVC 아키텍처: 일반적으로 사용되는 방법은 Controller-->Service-->Dao입니다. Controller는 Service의 상위 모듈이고 Service도 Dao의 상위 모듈이지만 우리는 실제 비즈니스 시나리오에서는 주입을 통해 직접 개발하지만, 일부는 직접 주입하지 않고 인터페이스를 통해 객체를 얻으므로 작업 비용이 증가합니다. 그럼 질문이 있습니다. 이 원리를 사용하면 작업 비용이 증가합니까? 제가 이해한 바에 따르면, 모듈도 세분화되어야 하고, 모듈 간 관계, 코드 간의 핵심 관계, 기본 프레임워크 설계 관계, 비즈니스 코드 관계로 나누어야 합니다. 비즈니스라면 기본적으로 확장성을 고려해야 합니다. 확장하는 방법이 없으므로 이 원칙을 사용할 필요가 없습니다.

할리우드 원칙

할리우드 원칙은 전화하지 마세요, 전화하겠습니다로 줄여서 헐리우드에서는 연예계에 이력서를 제출한 후 집에 가서 기다리기만 하면 됩니다. 예능사업 전체를 공연예술회사가 전권을 갖고 있기 때문에 배우들은 회사의 일을 소극적으로 받아들이고 필요할 때만 공연을 완성할 수 있다. 이는 종속성 역전 원칙과 일치합니다. 모든 종속성 역전 원칙은 헐리우드 원칙이라고도 합니다.

할리우드 원칙의 구체적인 구현은 템플릿 메서드 패턴입니다. 모든 구성 요소는 수동적이며 컨테이너는 모든 구성 요소 초기화 및 호출을 담당합니다. 이는 기본 프레임워크가 고려해야 할 점이기도 합니다. 주로 다음과 같은 이점이 있습니다.

인터페이스 기반 프로그래밍 지원

  • 싱글톤 및 추상 팩토리에 대한 의존도 감소

  • 비즈니스와 비즈니스 간의 결합 감소 Framework

  • 비즈니스 구성요소는 재사용 가능하고 플러그 가능합니다

  • Spring 프레임워크에 따라

  • IOC는 Spring 프레임워크의 특징을 이루는 Spring의 기능이며 그렇지 않다는 개념을 명확히 해야 합니다. IOC를 생성한 Spring 프레임워크.

Spring의 IOC의 역할은 무엇인가요? 소위 IOC는

Spring IOC 컨테이너가 객체의 수명 주기와 객체 간의 관계를 담당한다는 것을 의미합니다.

Spring IOC 주입 객체는 생성자 메소드 주입, sttter 메소드 주입, 그리고 인터페이스 주입. 생성자 주입

생성자 주입은 이름에서 알 수 있듯이 주입된 객체가 생성 방법에서 종속 객체의 매개변수 목록을 선언하여 어떤 종속 객체가 필요한지 외부에 알려준다는 의미입니다. 생성자 주입은 비교적 간단하며, 구축 방법을 통해 구축이 완료된 후에 완전히 사용할 수 있다.

<code>TestBean(Test test){<br>      this.test = test;<br>}</code>

setter 메소드 주입

JavaBean 객체의 경우 일반적으로 getter 및 setter 메소드를 통해 객체의 속성에 액세스하고 설정합니다. 따라서 현재 객체는 자신이 의존하는 객체에 해당하는 setter 메소드만 제공하면 되며, 이 메소드를 통해 해당 종속 객체를 주입된 객체로 설정할 수 있습니다. 생성자 주입에 비해 setter 주입은 더 편안하고 유연합니다. 언제든지 주입할 수 있습니다

<code>public class TestBean {<br><br>    private Test test;<br><br>    public void setTestBean(Test test) {<br>        this.test = test;<br>    }<br>}</code>

인터페이스 주입

인터페이스 주입은 불필요한 인터페이스를 구현하기 위해 종속 개체가 필요하므로 이 시나리오를 사용해야 합니다. 합리적으로 일반적으로 기본 프레임워크에는 거의 존재하지 않지만 비즈니스 분야에서는 더 많이 사용됩니다.

Annotation Insert

이제 Spring의 주류 주입 방법은 주로 @Component를 사용하여 많은 파생 주석을 생성하는 메타 주석 @Component를 기반으로 하는 주석을 통해 구현됩니다.

아아아아

위 내용은 종속성 역전의 Java 설계 원칙은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제