Golang 디자인 모델 - 창설 형 - 공장 방법

인용
여전히 햄버거 이야기 다. 골 랑 디자인 모델 - 창설 형 - 단순 공장 이라는 글 에서 단순 공장 의 단점 중 하 나 는 제품 종류 가 많 을 때 공장 논리 가 매우 복잡 해진 다 는 것 이다.복잡 한 것 이 있 으 면 우 리 는 어디 를 분해 하 는 것 이 가장 소박 한 사상 이다. 공장 의 논리 가 복잡 한 이상 우 리 는 그것 을 분해 하 자.
2 공장 방법
2.1 정의
공장 방법 은 한 공장 의 기류 와 제품 기 류 를 정의 하고 해당 하 는 공장 과 제품 자 류 를 파생 시 키 는 방식 을 통 해 구체 적 인 공장 에서 구체 적 인 제품 을 생산 하 는 목 표를 실현 한다.
2.2 공장 방법 3 요소
공장 시리즈 의 모델 (간단 한 공장, 공장 방법, 그리고 우리 가 곧 소개 할 추상 적 인 공장) 은 모두 세 가지 요소 가 있 는데 그것 이 바로 제품, 공장 과 클 라 이언 트 이다.
2.2.1 제품
단순 공장 과 마찬가지 로 추상 적 인 제품 은 햄버거 로 우 리 는 이 를 바탕 으로 KFC 와 McDonalds 의 구체 적 인 햄버거 를 파생 시 켰 다.
type Hamburger interface {
    Deliver()
}

type KfcHamburger struct{}

func (h KfcHamburger) Deliver() {
    fmt.Println("This is a hamburger from KFC.
"
) } type McdonaldsHamburger struct{} func (h McdonaldsHamburger) Deliver() { fmt.Println("This is a hamburger from McDonalds.
"
) }

2.2.2 공장
간단 한 공장 모델 은 한 공장 에서 모든 제품 의 설립 을 완성 하 는 것 과 달리 공장 방법 은 추상 적 인 공장 기 류 를 정 의 했 고 파생 된 구체 적 인 공장 에서 해당 제품 의 생산 을 책임 진다.
type HamburgerFactory interface {
    Create() Hamburger
}

type Kfc struct{}

func (f Kfc) Create() Hamburger {
    return new(KfcHamburger)
}

type Mcdonalds struct{}

func (f Mcdonalds) Create() Hamburger {
    return new(McdonaldsHamburger)
}

2.2.3 클 라 이언 트
공장 에 햄버거 생산 을 알 리 는 사람 이 야.
func main() {
    prefer := getPreferHamburger()

    var factory HamburgerFactory
    switch prefer {
    case "KFC":
        factory = new(Kfc)
    case "McDonalds":
        factory = new(Mcdonalds)
    default:
        fmt.Printf("%s not supported yet.
"
, prefer) os.Exit(1) } hamburger := factory.Create() hamburger.Deliver() }

우리 테스트 해 보 자.
$ go build -o factory_method.bin factory_method.go

$ ll factory_method.bin
-rwxrwxr-x 1 pirlo pirlo 1672879 8   30 21:39 factory_method.bin*

$ ./factory_method.bin -prefer KFC
This is a hamburger from KFC.

$ ./factory_method.bin -prefer McDonalds
This is a hamburger from McDonalds.

아 날로 그 를 사용 하여 다음 과 같이 표시 합 니 다.
2.3 공장 방법의 장단 점
장점
4. 567917. 공장 류 의 기능 은 계승 하 는 방식 으로 분해 되 어 간단 한 공장 논리 가 너무 복잡 한 문 제 를 피한다
4. 567917. 새로운 제품 을 추가 할 때 새로운 공장 과 제품 자 류 를 파생 시 키 기만 하면 되 고 기 존의 공장 과 제품 의 논 리 를 수정 하지 않 아 도 되 며 개방 - 폐쇄 원칙 에 부합된다

단점
4. 567917. 공장 방법 은 공장 논 리 를 분 해 했 지만 클 라 이언 트 는 제품 유형의 선택 에 참여 해 야 한다. 즉, 원래 간단 한 공장 의 복잡 한 논리 부분 을 클 라 이언 트 에 게 분담 해 야 한다

전체 코드: 공장 방법

좋은 웹페이지 즐겨찾기