프로그래밍/Design Pattern
-
[C#] Decorator Pattern프로그래밍/Design Pattern 2020. 11. 6. 13:47
Decorator Pattern 데코레이터 패턴이란 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있도록 해주는 패턴이다. 즉, 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 방식이다. 커피를 예로 들어보자. 커피에는 카페라떼, 에스프레소, 돌체라떼 등등 수많은 종류가 있다. 커피 가격을 계산하는 프로그램을 만들려고 할때, 모든 종류의 커피객체를 만드는 것은 매우 비효율적이다. 이러한 경우에 사용하는 것이 바로 데코레이터 패턴이다. 커피는 종류는 다양하지만 결국 원두에 어떤 첨가물을 넣느냐에 차이다. 이때 우리는 원두를 Component, 첨가물을 Deco..
-
[C#] Observer Pattern프로그래밍/Design Pattern 2020. 10. 30. 10:45
옵저버 패턴이란 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴. 그림으로 보겠습니다. 옵저버 패턴은 크게 Subject 하나와 다수의 Observer 로 구성되어 있습니다. 쉬운 예시를 들자면 Subject 는 유투브 채널 Observer 는 구독자가 되겠습니다. 요러한 일대다의 관계를 표현하고자 할때 유용한 패턴이 옵저버 패턴입니다. 코드 설계도를 봅시다. 위에 있는 Subject 와 Observer 는 인터페이스를 의미합니다. Abstract 클래스를 의미하죠. 아래에 있는 Concreate 함수는 필수 인터페이스를 상속받는 파생 클래스로 보시면 되겠습니다. 우리는 Concreate 클래스로 주제와 옵저버를 각각 생성하고 구독, 취소, 전파 하는 과..
-
[C#] Strategy Pattern프로그래밍/Design Pattern 2020. 10. 23. 15:12
전략 패턴 ( Strategy Pattern ) 최대한 간략하게 설명하자면 대부분의 메서드와 클래스를 모듈화 해서 실제로 사용할 때는 마치 부품을 조립해서 사용할 수 있도록 만드는 것이 전략패턴이 되겠습니다. Worst 와 Best 의 경우를 살펴보면 이해가 편합니다. 자동차 공정을 예시로 들어봅시다. 고객1은 모든 옵션에서 1번 옵션을 선택하고 고객2는 2번 옵션을 선택했습니다. 이 경우 하드 코딩을 한다고 가정했을때 아래와 같은 구조가 나옵니다. 고객 마다 클래스를 만들고 클래스안에 모든 메서드를 새로 작성하여 때려박는 방식이죠. 이러한 하드코딩의 장단점은 분명합니다. 장점 : 구현이 쉽고 빠르다. 단점 : 유지보수가 어렵다. 그래서 우리는 이러한 경우전략패턴을 사용합니다. 모든 모듈을 모듈화 하고 ..