종속성을 처리하는 더 나은 방법
5126 단어 tutorialpatternsapiprogramming
이를 달성하기 위한 "종속성 주입"및 "종속성 반전"을 포함하되 이에 국한되지 않는 몇 가지 접근 방식이 있으며, 이 게시물에서는 종속성 반전과 관련된 전략에 대해 설명합니다.
문제:
nodejs 앱이 있고 난수를 생성하는 라이브러리를 사용해야 한다고 가정합니다. 이것을 인터넷 검색으로 꽤 많이 찾을 수 있었고 라이브러리
x-random-generator
를 사용하기로 결정했으며 이를 수행하여 난수를 생성해야 합니다.import xRandomGenerator from `x-random-generator`
const randomNumber = xRandomGeneration.generateRandomNumber()
이 라이브러리도 임의의 ID를 생성하고 다음과 같이 사용한다고 가정해 보겠습니다.
import xRandomGenerator from `x-random-generator`
const randomId = xRandomGeneration.generateRandomId()
우리는 이것을 코드에서 사용했고 최대 X개의 파일에서 이 라이브러리를 사용했으며 모든 것이 잘 작동합니다.
잠시 후 앱이 조금 더 성장하고 이제 특수 문자 집합만 사용하여 임의의 사용자 이름을 사용해야 하는 새로운 기능이 있습니다. 우리는 라이브러리로 돌아가 설명서를 읽은 후 이 라이브러리가 this
-
및 _
를 포함하는 문자 집합을 사용하기 때문에 필요한 임의의 사용자 이름을 생성하는 데 사용할 수 없다는 것을 알 수 있습니다. 사용자 이름에 허용되지 않는 경우 이제 어떻게 해야 합니까?계속해서 이 기능과 난수 및 난수 ID를 제공하는
y-random-generator
라는 멋진 라이브러리를 찾았습니다. 그리고 둘 다 사용할 수 없기 때문에 기존 것을 이것으로 교체해야 하고, 여러 곳에서 사용했기 때문에 기존 라이브러리를 사용하던 파일을 모두 건드려야 하고, 이것은 특히 새 라이브러리에 다른 인터페이스가 있는 경우에는 좋은 생각이 아닙니다.해결책:
이 문제를 피하기 위해 우리는 의존성을 숨겨야 할 것입니다. 앱의 어떤 부분도 이 코드 부분이 어느 라이브러리에서 오는지 알 수 없어야 합니다. 하나의 구성 요소만 이를 알아야 하며 필요한 메서드만 추상화해야 합니다. 우리가 사용하는 큰 라이브러리에서 사용하십시오.
이 구성 요소는 다음과 같습니다
import yRandomGenerator from `x-random-generator`
export const randomGenerator = {
randomNumber: yRandomGenerator.generateRandomNumber,
randomId: yRandomGenerator.generateRandomId,
randomUsername: yRandomGenerator.generateRandomUsername,
}
우리는 전체 응용 프로그램에서 이 새로운 구성 요소를 사용할 수 있으며 다른 라이브러리로 전환하고자 할 때마다(심지어 매우 다른 인터페이스를 가질 수도 있음) 이 구성 요소는 코드가 여전히 제대로 작동하는지 확인하는 채택자 역할을 할 수 있습니다. 우리의 응용 프로그램.
import ZRandomGenerator from `z-random-generator`
const zRandomGenerator = new ZRandomGenerator()
const zRandomUsernameGenerator = new ZRandomGenerator('abcdefghijklmnopqrstuvwxyz')
export const randomGenerator = {
randomNumber: zRandomGenerator.numbers().generate,
randomId: zRandomGenerator.generate,
randomUsername: zRandomUsernameGenerator.generate,
}
결론:
종속 항목에 대한 결합을 줄이고 그들 중 하나를 업데이트하거나 변경하고자 할 때 우리 자신에게 조금 더 많은 자유를 주기 위해 우리는 항상 추상화 계층 아래에서 종속성을 숨기는 것을 목표로 해야 합니다. 그리고 이것은 심지어 "단일 책임 원칙"을 지지합니다.
Reference
이 문제에 관하여(종속성을 처리하는 더 나은 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mohammedalabd/a-better-way-to-deal-with-dependencies-2c2a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)