본문 바로가기
CS/디자인패턴

[CS] 전략 패턴과 의존성 주입의 차이, 컨텍스트 정의

by Johnny's 2023. 9. 25.

전략 패턴, 의존성 주입

공통점

- 모두 무언가를 쉽게 교체하기 위한 디자인 패턴

 

차이점

- 전략 패턴: 어떠한 동일한 행동 계약을 기반으로 다양한 구현이 명시되어있는 인터페이스를 만드는 것을 포함
- 의존성 주입 : 단지 일부 동작을 구현하고 의존성을 주입하기만 하는 패턴

 

컨텍스트

컨텍스트는 2가지 뜻으로 쓰임


1. 어떤 종류의 상태, 환경을 캡슐화한 것을 말함.
2. 작업d이 중단 되고 나중에 같은 지점에서 계속 될 수 있도록 저장하는 최소 데이터 집합.(ex 컨텍스트 스위칭)

컨텍스트는 contextcontextual information으로 크게 나눠 지는데 다음과 같음


1. 병원에 가면 “이름”과 주민등록번호 앞자리를 말해야함. 여기서 “병원에 방문”하는 context에서 여러분의 이름은 contextual information이 됨
2. HTTP요청을 하는 context에서 HTTP Header contextual inforamation이라고 할 수 있음

 

이러한 이론을 기반으로 한 다양한 모듈 또는 API로는 react.js에서는 전역적으로 “상태”값을 넘길 수 있는 context API가 있음

 

 

const ThemeContext = React.createContext("light");
class App extends React.Component {
    render() {
        return (
            <ThemeContext.Provider value="dark">
                <Toolbar />{" "}
            </ThemeContext.Provider>
        );
    }
}
function Toolbar() {
    return (
        <div>
            {" "}
            <ThemedButton />
        </div>
    );
}
class ThemedButton extends React.Component {
    static contextType = ThemeContext;
    render() {
        return <Button theme={this.context} />;
    }
}

React에서 context API를 통해 전역적으로 static contextType을 통해 상태 관리함

 

* 참고

- CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조 -인프런

 

'CS > 디자인패턴' 카테고리의 다른 글

[CS] flux 패턴  (0) 2023.09.24
[CS] MVC 패턴, MVP 패턴, MVVM 패턴  (0) 2023.09.19
[CS] 프록시 패턴  (0) 2023.09.18
[CS] 옵저버 패턴  (0) 2023.09.06
[CS] 전략 패턴  (0) 2023.09.05

댓글