design pattern

YEONGHUN KO·2023년 9월 12일
0

CS

목록 보기
5/6
post-thumbnail

Design pattern

  1. Sigleton

    1. instance는 딱 하나만 존재
    2. Single source of truth에 유용?
  2. Proxy

    1. Intercept data and transform
  3. Observer

    1. 많은 객체가 subscribe 함.
    2. One-to-many
    3. Target object가 바뀌면 subscribe하고 있던 객체안의 정보가 다 바뀜
  4. Mediator

    1. Many-to-many 의 object가 서로 통신할때 중간에 중재해주는 객체
    2. Airplane - runway를 Tower(관제탑)이 중재해주는거랑 비슷
  5. State

    1. state에 따라서 다르게 return 하려면 switch의 조건문으로 다르게 하는 방법이 있다.
    2. 그러나 그렇게 되면 switch 조건문이 엄청많아져서 switch hell로 이어질 수 있다.
    3. state를 일일이 하나의 객체안에서 분석하지 말고 state를 또 객체로 만들어서 거기서 따로 관리하는 방법이 있다.
    4. 예를 들어 Human이라는 객체가 있고 think라는 method가 있다.
    5. think안에 state.think 를 또 호출한다. 이때 state가 감정만 담당하는 또다른 클래스라면?
    6. 그럼 감정을 담당하는 클래스가 분리되어 독립적으로 존재한다.
    7. 도통 무슨말인지 모르겠으니 코드로 설명.
interface IFeeling {
  is: () => string;
}

interface IHuman {
  think: () => string;
}

class HappyFeeling implements IFeeling {
  is() {
    return "I'm happy";
  }
}

class SadFeeling implements IFeeling {
  is() {
    return "I'm sad";
  }
}

class Human implements IHuman {
  private feeling: IFeeling;
  constructor() {
    this.feeling = new HappyFeeling();
  }

  think() {
    return this.feeling.is();
  }
}

const human = new Human();

console.log("human says", human.think());

이런식으로 Feeling 객체를 따로 만들어서 감정을 관리하게 한다.

Human객체는 feeling이 어떤 객체인지 상관하지 않는다. 그냥 Feeling에 담긴 감정만 think할뿐이다.

출처 :https://www.youtube.com/watch?v=tv-_1er1mWI

profile
'과연 이게 최선일까?' 끊임없이 생각하기

0개의 댓글