[디자인 패턴] 반복자 패턴

반복자 패턴(Iterator Pattern) 반복자 패턴은 내부 구조를 외부에 노출하지 않고, 집합체(Aggregate)를 통해 원소 객체에 순차적으로 접근할 수 있습니다. C++의 vector에도 사용되는 유명한 패턴입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 std::vector<int> nums; nums.push_back(1); nums.push_back(2); nums.push_back(3); nums.push_back(4); nums.push_back(5); // 반복자 패턴 std::vector<int>::iterator iter = nums.begin(); for (; iter != nums.end(); iter++) { std::cout << *iter << std::endl; } 여기서 vector<T>::iterator가 반복자 패턴입니다. 반복자 패턴 구조 반복자 패턴의 해심은 효율적인 집합 관리를 위해 별도의 집합체를 갖고 있습니다....

December 8, 2020 · 3 min · Pacientes

[Git] 기본적인 사용법

Git & Github Hugo 블로그를 작성하면서 PaperMod 테마를 사용하고 있습니다. 블로그를 사용하던 중 pull request를 만들고자 하던 중.. 문제가 생겼습니다. 원본 repository를 fork하여 저만의 PaperMod repository를 만들었습니다. (아무런 생각없이) 저만의 블로그로 수정에 수정을 거듭하며 master branch에 commit이 쌓여갑니다. pull request 버튼을 누르니.. 지금까지 commit한 모든 내용이 pull request에 포함됩니다. 원하는 commit message만 pull request하는 방법을 찾아보았지만.. 처음부터 branch를 나누고, 작업을 진행했어야 합니다. 눈물을 머금고.. upstream branch로부터 local branch를 생성하고 pull request 하는 방법을 공부합니다....

December 8, 2020 · 2 min · Pacientes

[디자인 패턴] 프록시 패턴

프록시 패턴(Proxy Pattern) 프록시 패턴은 객체 접근을 제어하기 위한 중간 단계에 대리자를 생성하여 처리를 위임하는 패턴입니다. 프록시 패턴의 가장 큰 특징은 하나의 객체를 두 개로 분리하는 것입니다. 그러나 분리된 두 개의 객체는 서로 다른 객체가 아닌 동일한 객체이며 동일한 인터페이스를 갖고 있습니다. 프록시 패턴은 응용이 매우 많습니다. 대표적인 응용 사례는 다음과 같습니다. 원격 프록시 가상 프록시 보호 프록시 스마트 프록시 프록시 패턴 구조 프록시 패턴은 두 객체를 이어준다는 역할에서 **어댑터 패턴(Adapter Pattern)**과 유사합니다....

December 8, 2020 · 6 min · Pacientes

[디자인 패턴] 플라이웨이트 패턴

플라이웨이트 패턴(Flyweight Pattern) 플라이웨이트 패턴은 이름이 의미하는 바와 같이 공통된 객체를 공유하여 자원을 절약하는 패턴입니다. 자원이란 컴퓨터의 메모리를 의미합니다. 플라이웨이트 패턴 구조 공통된 객체를 공유하기 위해서는 특별한 조건이 필요합니다. 공유하려는 객체는 불필요한 메모리 사용을 방지하기 위해 단 하나의 객체로 만들어야 합니다. 이러한 특징은 **싱글톤 패턴(Singleton Pattern)**과 매우 비슷합니다. 또한 객체의 생성은 new 키워드로 동작합니다. 객체를 싱글톤 패턴과 결합하여 생성하는 것은 **팩토리 패턴(Factory Pattern)**과 연관 지어 생각할 수 있습니다. 이처럼 플라이웨이트 패턴은 다른 객체와의 결합이 많은 편입니다....

December 7, 2020 · 4 min · Pacientes

[디자인 패턴] 파사드 패턴

파사드 패턴(Facade Pattern) 파사드 패턴은 복잡하게 분리된 모듈의 결합입니다. 다른 말로는 연관된 서브 시스템의 메서드를 하나로 결합한 형태입니다. API를 사용해본 경험이 있다면, 대부분 파사드 패턴을 보았고, 사용하고 있습니다. 이처럼 파사드 패턴은 사용자에게 제공되는 최상위 통합 인터페이스입니다. 파사드 패턴의 구조 파사드 패턴은 특별한 구조보다는 작성 규칙이 존재합니다. 자기 자신만의 객체 사용 메서드에 전달된 매개변수 사용 메서드에 생성된 객체 사용 객체에 속하는 메서드 사용 먼저, 파사드 패턴을 활용했지만 잘못된 예시를 살펴보겠습니다. 잘못된 파사드 패턴의 예제 불필요한 객체 생성 루틴과 재호출을 코드에 삽입하는 경우가 많습니다....

December 7, 2020 · 3 min · Pacientes