괴발개발 성장기
반응형

Study/디자인패턴 4

[디자인패턴] 프록시 패턴(Proxy Pattern)

프록시 패턴(Proxy Pattern) 어떤 객체의 대리자 역할을 하는 객체를 통해 해당 객체의 기능을 간접적으로 사용하는 디자인 패턴 원래 사용하려는 객체를 직접 사용하지 않고 대리인을 통해서 쓰는 패턴 클라이언트로 첫 요청을 받으면 프록시 받는 것이다. 예를 들으면 사장을 만나기 위해서는 비서를 거쳐서 가는 것과 비슷한 개념이다. # 장점 - 기존 코드는 수정하지 않고 새로운 기능을 추가한다 => 개방폐쇄의 원칙 - 기존 코드의 기능만 유지할 수 있다. - 보안을 강화시킬 수 있다. - 초기화 지연을 시킬 수 있다. => 최초로 사용할 때 만든다. - 캐싱하여 성능을 향상 - 특정 권한이나 조건에 맞는 경우 객체에 접근할 수 있다. # 단점 - 코드의 복잡성이 증가한다. # 예시 가상 프록시를 사용하..

[디자인패턴] 팩토리 메소드 패턴(Factory Method Pattern)

# 정의 객체 생성을 서브클래스에 위임하여 객체 생성과 사용을 분리하는 디자인 패턴 # 장점 1) 개방-폐쇄 원칙(OCP) 적용된다. 기존의 코드를 변경하지 않고 새로운 기능을 확장할 수 있다. 이렇게 개발하면 Product와 Concrete가 느슨하게 결합한다. 2) 결합도가 낮아진다. 3) 코드는 간결해지고 기존 코드가 복잡해지지 않는다. # 단점 1) 각자의 역할을 나누다 보면 클래스가 늘어나는 게 단점이다. # 예시 // Ship 인터페이스 type Ship interface { // 공통 동작을 정의 Color() string } type WhiteShip struct{} func (c WhiteShip) Color() string { return "color : white" } type Blo..

[디자인패턴] 싱글톤

# 싱글톤 개념 객체의 인스턴스를 한개만 생성되는 패턴 # 목적 1) 어떤 클래스에 오직 하나의 인스턴스만 존재 2) 하나만 존재하는 인스턴스에 전역(global) 접근 방법 제공 # 예시 게임의 설정 => 오직 하나만 존재한다. # 기본적으로 싱글톤 예시 - sync.Once를 사용하여 한 번만 인스턴스를 생성하도록 보장한다. - 기화 코드나 설정 코드를 안전하게 관리할 때 유용하게 사용 - 싱글톤 인스턴스의 초기화를 보장 type singletonByBasic struct { data string } var ( once sync.Once instanceByBasic *singletonByBasic ) func getInstanceByBasic() *singletonByBasic { once.Do(fu..

[디자인패턴] 시작

# 동기 개발자로서 알아야 할 내용으로 알고 있었다. golang으로 접하기 어렵고 자바로 된 예시가 많아서 그동안 외면하고 있었다. 문득 한번 제대로 공부해보자라는 생각이 들었다. 그래서 강의를 들으면서 챗GPT에 도움을 받아서 진행할 예정이다. # 목표 싱글톤 팩토리 메소드 프록시 패턴 이터레이터 패턴 옵저버 패턴 전략 패턴 무조건 6개의 패턴을 먼저 하고 그다음에 나머지 패턴을 해보자! 6개는 무조건 하기!! # 참조 자료 https://github.com/tmrts/go-patterns GitHub - tmrts/go-patterns: Curated list of Go design patterns, recipes and idioms Curated list of Go design patterns, ..

반응형