Golang 디자인 모델 - 창설 형 - 공장 방법
4585 단어 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. 공장 방법 은 공장 논 리 를 분 해 했 지만 클 라 이언 트 는 제품 유형의 선택 에 참여 해 야 한다. 즉, 원래 간단 한 공장 의 복잡 한 논리 부분 을 클 라 이언 트 에 게 분담 해 야 한다
전체 코드: 공장 방법