Class : 객체 설계도, 객체 만드는 설명서, 모델링,
class person {
age: 20
attack = () => { }
run = ()=> { }
}
const p1 = new Person()
p1.age
p1.attack()
class Date {
getFullYear(){ }
getMonth(){ }
getDate(){ }
}
const date = new Date()
date.getFullYear()
date.getMonth()
date.getDate()
자바스크립트 : 단일 상속O, 다중 상속X
-------------------------------------------
MVC
M: model
V: view
C: controller
미들웨어함수 === 컨트롤러
models → DB 스키마
상품API→컨트롤러(미들웨어함수)→product서비스
Service === 비즈니스로직
-------------------------------------------
강한 결합
class ProductController {
const cashService = new CashService()
}
강한 결합(tight coupling)===의존성
한 클래스 내에서 "다른 객체"를 생성하는 경우
두 객체는 강한 결합을 갖고 있는 상태이다.
"의존성"이 강하다.
------------------------------------------------------------------------------------
의존성 주입 → 강한 결합을 약한 결합으로 만들기 위함
해당 클래스(ProductController)가 아닌 외부의 환경 설정 config클래스(API목록)에서
객체를 생성한 후 ProductController의 생성자를 통해서 객체(ProductService)를 주입받는 것을 말한다.
------------------------------------------------------------------------------------
약한 결합 만들기
config.js (API 목록)
import { ProductController } from "./mvc/controllers/product.controller.js";
import { ProductService } from "./mvc/controllers/services/product.service.js";
const productService = new ProductService(); //new 한번으로 모든 곳에서 재사용가능(싱클톤 패톤)
const productController = new ProductController(productService)
-----------------------------------------------------------------------------------------
export class ProductController{
constructor(productService){
this.productService = productService;
}
const isSoldout = this.productService.checkSoldout()
------------------------------------------------------------------------------------------
export class ProductService {
checkSoldout= () =>{
console.log("판매가 완료 되었는지 검증한다.");
}
------------------------------------------------------------------------------------------
제어의 역전:
프레임 워크(nestJS)가 개발자를 대신해서 의존성 주입을 해주는 것을 의미한다.
강한 결합도 - bad
약한 결합(Javascript)
'고농축 백엔드' 카테고리의 다른 글
고농축 백엔드 docker-bind★★ (0) | 2023.01.31 |
---|---|
고농축 벡엔드 10 - TypeScript (0) | 2023.01.30 |
고농축 백엔드 8 - 도커 컴포즈, volume 마운트, moongoose (0) | 2023.01.25 |
고농축 백엔드 7 - docker 명령어 정리 (0) | 2023.01.22 |
고농축 백엔드 6 - 동기와 비동기 (0) | 2023.01.22 |