factory method pattern

factory method patternfactory는 공장을 의미한다. 공장패턴? 이 패턴은 공장의 작동방식을 생각해보면 어렵잖게 이해할 수 있는 패턴이다. 소프트웨어 개발이 아닌 영역에도 널리 쓰이는 패턴이다.공장은 필요한 자원과 설비를 갖추고 있으며, 이들 자원과 설비를 이용해서 특정한 객체를 생산할 수 있는 시설이다. 만약에 오토바이를 만드는 공장...

Command Pattern

Command Pattern패턴과 패턴에 대한 (UML을 포함한)설명글을 보면 역시 사용하는 것보다 설명하는게 더 어렵군이라는 느낌이다. 내 생각을 잘 이해하기 쉽게 잘 전달해보자라는 마음가짐으로 가능한 평이하게 글을 만들어 봐야겠다.Command Pattern은 행동자체를 객체로 본다. 행동을 객체로 봄으로써 좀더 쉽게 명령을 내리기 전의 상태로 복귀할...

Strategy pattern

Strategy pattern httpstrategy pattern은 소프트웨어 디자인 패턴의 하나로, 실행시간에 알고리즘(이 패턴은 알고리즘군을 정의하고 각각을 캡슐화하고 교환해서 사용할수 있도록 만든다. 이 패턴을 이용해서 만들어진 소프트웨어는 원본 소스크드의 변경없이 알고리즘을 추가할 수 있으며, 추가된 알고리즘을 동적으로 적재할 수 있다. 결과적으...

Observer Pattern

Observer Pattern옵저버 패턴은 Publish subscribe패턴이라고 불리우기도 한다. 컨텐츠 발행자가 컨텐츠의 변화가 생겼을 때 구독자에게 알려주는 방식과 비슷하기 때문이다.이 패턴은 객체의 상태를 관찰하는 Observer - 관찰자 -객체가 존재한다. 이 Oserver는 객체의 상태가 바뀌면 그 객체에 의존관계에 있는 다른 객체들에게도 ...

디자인 패턴 - Facade Pattern

디자인 패턴 - Facade Pattern아래 UML은 staruml(attachment어떤 일을 하는 프로그램(그러나 여러개의 서브함수를 두게 될 경우에는 이들을 다루기가 지나치게 복잡해지는 경우가 발생할 수 있다. socket(facade pattern을 이용하면, 이러한 과정을 숨기고 개발자에게는 단순한 Interface만을 제공할 수 있다. 제품을...

Adapter pattern

Adapter pattern인터페이스가 일치하지 않는 클래스를 함께 운용해야 하는 경우에 사용할 수 있다. 비교적 간단한 패턴(이 패턴에는 다음의 객체들이 존재한다. Adaptee Client Adapter Adapter pattern은 Object Pattern과 Class pattern 두가지 방법으로 구현가능하다. attachmentClient는...

Abstract Factory pattern

Abstract Factory patternAbstract Factory pattern 은 Factory추상화 시키는 이유는 concrete Create의 종류가 많아지게 될 경우 애플리케이션의 코드 수정이 불가피해 질 수 있다는 Factory pattern의 단점을 보완하기 위함이다.attachment#include using name...

Circuit Breaker 패턴

대부분의 소프트웨어들은 다른 프로세스를 호출하기 마련이다. 내부에 있는 프로세스를 (IPC를 이용해서) 호출하는 경우도 있겠지만, 특히 MSA, OpenAPI가 일반화된 요즘에는 다른 네트워크에서 실행 중인 프로세스 원격으로 호출하는 경우가 많다.IPC 통신과 원격 통신하는 소프트웨어의 가장 큰 차이점은 "상황을 완전히 통제 할 수 없다는 점"이다. 요청이...

golang 빌더패턴

객체를 만드는 디자인 패턴이다. factory 패턴과 abstract factory 패턴과 유사하다. 유사한데도 사용하는 이유가 있는데, factory, absstract factory 패턴은 아래와 같은 문제점이 있다. 수맣은 파라메터들이 클래스로 전달되는데, 타입까지 비슷한 경우가 많기 때문에 파라메터를 제대로 사용하기가 쉽지 않아서 에러를 발생하는 경...

Facade pattern

Facade는 건물의 외관을 의미한다. 여러 클래스를 사용 해야 한다고 가정해보면, 개발자는 각각의 클래스로 부터 객체를 만들어서 사용해야 할 것이고, 각 클래스의 세부동작을 알고 있어야 할 것이다. Computer클래스가 있다고 가정해보자. 이 컴퓨터를 끄고, 켜기 위해서는 CPU, 메모리, 하드, 운영체제 등 수많은 작업을 수행해야 한다. 객체지향에서는...