공대베짱이

Flyweight Pattern

1. Flyweight 패턴이란 Flyweight 디자인 패턴은 오브젝트(객체)를 ‘가볍게’하기 위한 것이다. 오브젝트는 컴퓨터 안에서 가상적으로 존재하는 것이기 때문에 ‘무겁다’ 혹은 ‘가볍다’라고 표현해도 실제의 무게를 나타내는 것은 아니다. 여기에서 말하는 무게는 ‘메모리의 사용량’을 의미한다. 많은 메모리를 사요하는 오브젝트를 ‘무겁다’고 표현...

State Pattern

1. State 패턴이란 오브젝트 지향 프로그래밍에서는 프로그램 할 대상을 ‘클래스’로 표현한다. 어떤 것을 클래스로 표현할지는 설계를 하는 사람이 생각해야 한다. 클래스에 대응하는 구체적인 ‘사물’이 현실에서 존재하는 경우도 있고 존재하지 않는 경우도 있다. 경우에 따라서는 ‘이런 것이 클래스가 될 수 있나?’하고 놀랄 정도의 것을 클래스로 하는 경...

Memento Pattern

1. Memento 패턴이란 오브젝트 지향의 프로그램에서 undo 기능을 실행하려면 인스턴스가 가지고 있는 정보를 저장해 둘 필요가 있다. 단, 저장만 해서는 쓸모가 없고 저장한 정보로부터 인스턴스를 원래의 상태로 되돌려야 한다. 인스턴스를 복원하기 위해서는 인스턴스 내부의 정보를 자유롭게 액세스할 수 있어야 한다. 그러나 원하지 않는 액세스를 허용...

Mediator Pattern

1. Mediator 패턴이란 mediator는 ‘조정자’, ‘중개자’라는 의미이지만, 의지할 수 있는 ‘중개인’을 상상하는 편이 이해하기 쉬울 것이다. 곤란한 일이 생기거나 모임 전체에 영향을 미칠만한 일이 발생하면 중개인에게 알리고, 중개인의 지시대로 실행한다. 모임의 각 회원이 멋대로 다른 회원과 대화해서 판단하는 것이 아니라, 언제나 중개인을 ...

Facade Pattern

1. Facade 패턴이란 프로그램이라는 것은 점점 커지는 경향이 있다. 많은 크래스가 만들어져 서로 관계를 맺으면서 복잡하게 된다. 클래스를 사용할 경우에는 클래스 간의 관계를 정확히 이해하고 정확한 순서대로 메소드를 호출할 필요가 있다. 커다란 프로그램을 사용해서 처리를 실행하려면 상호 관련된 많은 클래스를 적절하게 제어해야 한다. 그렇다면 그 ...

Chain of Responsibility Pattern

1. Chain of Responsibility 패턴이란 책임 떠넘기기라는 단어는 부정적인 의미가 강하지만 ‘책임 떠넘기기’같은 처리가 필요 할 경우도 있다. 어떤 요청이 발생했을 때 그 요청을 처리할 오브젝트를 직접 결정할 수 없는 경우, 복수의 오브젝트(객체)를 사슬(chain)처럼 연결해 두면, 그 오브젝트(객체)의 사슬을 차례로 돌아다니면서 목...

Visitor Pattern

1. Visitor 패턴이란 데이터 구조 안에 많은 요소가 저장되어 있고, 그 각 요소에 대해서 무엇인가 ‘처리’해 간다고 가정한다. 이때 그 ‘처리’의 코드는 일반적으로 생가하면 데이터 구조를 표시하고 있는 클래스 안에 기술할 것이다. 그러나 만약, 그 ‘처리’가 여러 종류라면 새로운 처리가 필요할 때마다 데이터 구조의 클래스를 수정해야 한다. V...

Decorator Pattern

1. Decorator 패턴이란 스펀지 케이크가 1개 있다고 가정한다. 크림을 바르면 아무 모양이 없는 크림 케이크가 된다. 여기에 딸기를 얹으면 딸기 케이크가 되고, 초콜릿으로 장식을 하고 이름을 쓰고 나이 수만큼 초를 꽂으면 생일 케이크가 완성된다. 오브젝트(객체)도 이런 케이크와 비슷한 경우가 있다. 우선 스펀지 케이크와 같은 중심이 되는 오프...

Composite Pattern

1. Composite 패턴이란 컴퓨터의 파일 시스템에는 ‘디렉터리’라는 것이 있다. 디렉터리 안에는 파일이 있거나 다른 디렉터리(하위 디렉터리)가 있기도 한다. 또 그 하위 디렉터리 안에는 다른 파일이나 하위 디렉터리가 있기도 한다. 디렉터리는 이와 같이 ‘상자 안의 상자’로 된 구조, 즉 재귀적인 구조를 만들어 낸다. 디렉터리와 파일은 서로 다르...