Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발공부일지

NodeJS - 의존성 주입(DI), 제어의 역전(IoC), Overring, overloading 본문

NodeJS

NodeJS - 의존성 주입(DI), 제어의 역전(IoC), Overring, overloading

보람- 2023. 10. 15. 17:55

목차

1. 의존성 주입 (DI)

2. 제어의 역전(IoC)

3. 오버라이딩 (overriding)

4. 오버로딩 (overloading)


 

1. 의존성 주입 (DI)

- 자원을 효율적으로 사용하여 확장성 있게 코드를 작성할 수 있다.

- MVC 계층으로 코드를 작성할때 하나의 service를 여러개의 controller가 사용해야할 경우

  - 똑같은 코드인 service를 n번 사용하게 되어 비효율적이므로

    ( 프로젝트했을때 board.controller, notice.controller 했던것처럼) 

 

- class를 만들고 module.exports로 내보내고

- module 파일을 만들어서 인스턴스를 생성만을 모아둔다.

   - 만들어둔 class의 인스턴스 생성을하면서 인자에 넣어 조립해준다.

   - 그걸 다른 파일에서 불러와서 사용!

 

 

 

2. 제어의 역전(IoC)

- 제어를 module 파일에서 하고있는데 만약 인자를 추가해야하는 상황마다 주입을 해줘야하는데 실행하는곳에서 바로 작성해주는것을 말한다고한다.

 

배운뒤에 더 적기로한다.

 

 

 

3. 오버라이딩 (overriding)

class Controller {
    name;
    constructor(name) {
        this.name = name;
    }
    print() {
        // console.log(` controller call`);
        throw new Error("자식클래스에서 먼저 구현하고 사용하기");
    }
}

class AuthController extends Controller {
    constructor() {
        super();
    }
    // print() {
    //     console.log(`auth controller call`);
    // }
}

class UserController extends Controller {
    constructor() {
        super();
    }
}

const authController = new AuthController();
const userController = new UserController();
authController.print();
VM324:8 Uncaught Error: 자식클래스에서 먼저 구현하고 사용하기
at AuthController.print (<anonymous>:8:15)
at <anonymous>:29:16

 

 

 

4. 오버로딩 (overloading)

- express 사용하면서 적었던 코드로 app.use()를 예를 들수있다.

app.use();
// 인자값의 수가 고정되어었지않아
// 2가지 데이터타입 -> string, handler

app.use(string, handler);

app.use((req, res, next) => {
    req.user = "guniee";
    next();
});

app.use("/");

 

 

 


※ instanceof

- 객체가 특정 클래스의 인스턴스인지 여부를 확인하는 데 사용하는데 맞다면 true, 아니면 false를 반환해준다.