디자인 패턴/Design Pattern3 [디자인 패턴] 장식자 패턴(Decorator Pattern) 장식자 패턴(Decorator Pattern)이란? 객체에 동적으로 새로운 행위를 추가할 수 있도록 해주는 구조 패턴이다. 클래스의 책임을 실행 시간에 코드를 수정하지 않고 바꾸고 싶을 때 사용한다. 전략 패턴도 이 기능이 가능하다. 전략 패턴은 전략 객체를 바꿔 실행시간에 확장한다. 장식자 패턴은 한 객체를 다른 객체로 포장하여 책임을 추가/변경한다 장식한 개체는 여전히 원래 객체와 같은 타입이다. -> is-a 한 객체를 여러 번 포장할 수 있고, 보통 포장하는 순서가 중요하지 않다. 포장하는 순서가 중요할 시 제한을 따로 둬야한다. is-a와 has-a를 모두 사용한다. has-a(포함 관계)를 이용해 책임을 추가/변경한다. 사용하는 이유 위와 같은 주문 시스템이 있다고 하자. 주 목적은 가격을 계.. 디자인 패턴/Design Pattern 2022. 10. 14. [디자인 패턴] 관찰자 패턴(Observer 패턴) 관찰자 패턴(Observer 패턴)이란? 객체 사이에 관계가 이루어져 있을 때, 한 객체가 바뀌는 것을 계속 확인하고 있는 것이 아니라 상태가 변화됐을 때 그에 의존하는 객체에게 알려주는 패턴이다. 즉, 관찰하는 객체가 능동적으로 관찰하는 것이 아닌 관찰 대상으로부터 어떤 사건이 발생하였을 때 수동적으로 통보해주길 기다리는 것이다. 사용하는 이유 예를 들어보자. 기상청이 있을 때 시민들이 기상청에서 새로운 측정이 있는지를 계속 관찰하고 있는 것은 비효율적이다. 기상청에서 새로운 측정을 했을 때, "시민들에게 이러한 측정이 있었다!"라고 알려주는 것이 효율적이다. 위와 같이 WeatherData 클래스가 있을 때 온도, 습도, 기압 메서드는 계속해서 새로운 정보를 준다고 하자. 이제 measurements.. 디자인 패턴/Design Pattern 2022. 10. 11. [디자인 패턴] 전략 패턴(Strategy Pattern) 전략 패턴(Strategy Pattern) 알고리즘 군을 정의하고 캡슐화해주며, 서로 언제든지 바꿀 수 있도록 해주는 방법이다. 즉, 객체가 해야 하는 행위들을 각각 전략으로 만든 후, 동적으로 행위의 수정이 필요한 경우 전략을 바꿔주는 것만으로 수정하는 패턴이다. 왜 사용하는가? 예시를 들고, 이를 통해 전략 패턴을 왜 사용하는지 알아보자. 이처럼 Duck 클래스가 있다고 하자. 이 오리 클래스 안에는 quack 메서드와 swim 메서드, display 메서드가 있다. 이 Duck 클래스를 상속받는 MallardDuck과 RubberDuck 클래스 또한 울음소리를 낼 수 있고, 수영을 할 수 있다. 만약 여기서 Duck 클래스에 fly 메소드를 추가시킨다면 어떨까? RubberDuck 클래스는 고무오리.. 디자인 패턴/Design Pattern 2022. 10. 10. 이전 1 다음 728x90