TypeScript의 종속성 역전 원칙
Depend upon abstractions, not concretions.
애플리케이션에서 두 가지 유형의 클래스를 구분할 수 있습니다.
데이터베이스에서 읽기 또는 파일 저장과 같은 작업을 수행하는 저수준 클래스입니다.
비즈니스 로직을 구현하고 이러한 하위 수준 클래스를 사용하는 상위 수준 클래스.
이 원칙이 제안하는 것은 높은 수준의 클래스가 구체적인 구현 대신 인터페이스에 의존한다는 것입니다. 이것은 예를 들어 이해하기 쉽습니다.
다음 나쁜 예에는 데이터베이스에 주문을 저장하는
OrderService
클래스가 있습니다. OrderService
클래스는 하위 수준 클래스MySQLDatabase
에 직접적으로 의존합니다.나중에 사용 중인 데이터베이스를 변경하려면
OrderService
클래스를 수정해야 합니다.class OrderService {
database: MySQLDatabase;
// constructor
save(order: Order): void {
if (order.id === undefined) {
this.database.insert(order);
} else {
this.database.update(order);
}
}
}
class MySQLDatabase {
insert(order: Order) {
// insert
}
update(order: Order) {
// update
}
}
인터페이스를 만들고
OrderService
클래스를 인터페이스에 종속시켜 이를 개선할 수 있습니다. 이런 식으로 종속성을 뒤집습니다. 이제 상위 수준 클래스는 하위 수준 클래스 대신 추상화에 의존합니다.class OrderService {
database: Database;
// constructor
save(order: Order): void {
this.database.save(order);
}
}
interface Database {
save(order: Order): void;
}
class MySQLDatabase implements Database {
save(order: Order) {
if (order.id === undefined) {
// insert
} else {
// update
}
}
}
이제
OrderService
클래스를 수정하지 않고 새 데이터베이스를 추가할 수 있습니다.
Reference
이 문제에 관하여(TypeScript의 종속성 역전 원칙), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/jmalvarez/dependency-inversion-principle-in-typescript-4nm0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)