파사드 패턴이란? 파사드 패턴은 일련의 저수준 인터페이스들을 하나의 고수준 인터페이스로 묶어주는 패턴이다. 클라이언트 객체가 여러 저수준 인터페이스의 동작을 제어 하려면 여러 저수준 인터페이스의 메서드들을 일일히 호출해야 하는데, 파사드 패턴을 이용하면 고수준 인터페이스의 메서드 호출 만으로 한 번에 할 수 있게 된다. *파사드 패턴에서는 고수준 인터페이스를 저수준 인터페이스를 통합했다 해서 '통합 인터페이스'라고 부른다. 저수준 인터페이스를 바꾸기 위해서 다른 인터페이스를 건드리지 않고 통합 인터페이스의 코드만 건드리면 되므로 클라이언트 객체는 여러 저수준 인터페이스에 대해 의존성이 느슨해진다. 파사드 패턴을 쓰지 않았을 때의 문제점 예를 들어 우리가 커피를 만든다고 해보자. 커피를 만들기 위해서는 원..
Design Pattern
전략 패턴이란? 전략 패턴이란 런타임에 교체 가능한 알고리즘을 만드는데 사용되는 패턴이다. 하나의 객체가 다양하면서 변화하는 역할을 해야할 때 사용된다. 이름이 전략 패턴인 이유는, 객체의 행위를 전략(Strategy)을 통해 동적으로 바꿔주도록 해서 객체를 유연하게 만드는 패턴이기 때문이다. 전략 패턴 예시 우리가 이메일을 보낸다고 해보자. 이메일에는 시작말과 맺음말이 들어가며 사람마다 혹은 기기마다 이를 다르게 설정할 수 있어야 한다. 예를 들어 아마 한 동안 아이폰에서 메일을 보냈을 때 끝에 "Sent from IOS"라는 문구가 들어갔던 것을 기억할 것이다. 어떤 사람들은 아이폰을 사용하지 않음에도 저 문구가 멋있어 보여서 마지막에 "Send from IOS"라는 문구를 붙여서 보내기도 했다. 이..
디자인 패턴의 등장 배경 개발자들은 개발을 하면서 프로그램의 유연성과 확장성과 관련된 비슷한 문제들을 마주하며, 이 문제들은 풀기 위해서 많은 시간이 소요된다. 만약 이 문제들에 해결책이 있다면 어떨까? 문제를 풀기 위한 시간을 줄일 수 있을 것이다. 이러한 생각에서 만들어진 것이 바로 소프트웨어 디자인 패턴이다. 디자인 패턴은 개발을 하면서 생길 수 있는 문제를 유형별로 나눠서 해결책을 제시한다. 즉, 디자인 패턴은 일종의 수학 공식 같은 역할을 한다. 다만 수학 문제가 개발의 확장성 유연성 문제가 되고 수학 공식은 디자인 패턴이 된다. 만약 우리가 근의 공식을 안다면 2차 함수 문제를 빠르게 풀 수 있지만 근의 공식을 모른다면 2차 함수 문제를 푸는데 시간이 걸린다. 디자인 패턴도 마찬가지로 디자인 ..
리액티브 프로그래밍과 옵저버 패턴 리액티브 프로그래밍 패러다임은 최근 프로그래밍 패러다임 중 가장 중요한 패러다임 중 하나이다. 리액티브 프로그래밍 패러다임이 유행하기 이전에는 명령형 프로그래밍 패러다임이 유행했다. 명령형 프로그래밍 패러다임 하에서는 데이터가 변할 때 데이터가 변화에 따라 데이터가 변해야 하는 부분에 모두 적용을 시켜줘야 했다. 리액티브 프로그래밍 패러다임은 데이터가 변하는 것을 관찰해서 데이터가 변할 때 동작을 변하도록 만드는 것을 기본으로 한다. 즉, 데이터에 반응(Reactive)하도록 코드를 만드는 것이다. 이렇게 하면 데이터가 변화할 때 변화가 필요한 부분에 변화를 관찰하도록 코드를 넣어주면 데이터가 변화했을 때 데이터 변화에 대한 변경 사항이 즉시 게시된다. 옵저버 패턴은 리..