Golang을 사용하여 의존성을 주입하는 방법

8094 단어 Gotech

Golang 주입 의존성 사용 방법


방법
  • main.제작 고
  • 의존성 패키지 만들기
  • 인터페이스,struct,인터페이스를 되돌려주는 New 함수 만들기
  • 3단계에서 생성된 New 함수 호출
  • 1. main.생성 고


    cmd/app/main.제작 고, 프로그램 실행 준비 입구
    main.go
    package main
    
    import "fmt"
    
    func main() {
    	fmt.Println("Hello, 世界")
    }
    
    

    2. 종속 객체의 패키지 만들기


    이번에는 의식적으로 청결 체계를 구축하여usecase층을 만들어야 한다
    cmd 디렉터리와 같은 층에서usecase 디렉터리를 만들고 go 파일을 만듭니다.
    이번 가설은 프로그램 사용자의usecase,user를 설정합니다.go를 생성합니다.
    user.go
    package usecase
    
    // TODO 今後の手順で処理を追加する
    

    3. 인터페이스, struct, 인터페이스를 되돌려 주는 New 함수 만들기


    사용자 관련 논리를 확인하고interface,struct,New 함수를 만듭니다.
    이번에는 간단하게 대답하기 위한 기능이 있습니다,user.goo에 추가.

    인터페이스 정의


    user.go
    type User interface {
        Answer() (string, error)
    }
    

    struct 만들기


    user.go
    type User interface {
        Answer() (string, error)
    }
    
    type user struct {
    	// もしuser の持つロジックが別のパッケージに依存する場合はここに記述
    }
    

    수신기 함수에서 논리를 실현하다


    Answer 메소드를 패브릭 수신기 함수로 구현하여 User interface에 정의된 Answer 메소드를 구현합니다.
    user.go
    type User interface {
        Answer() (string, error)
    }
    
    type user struct {
    	// もしuser の持つロジックが別のパッケージに依存する場合はここに記述
    }
    
    func (receiver *user) Answer() (string, error) {
    	return "Answerメソッドが呼ばれました", nil
    }
    

    New 함수 구현


    사용자 인터페이스를 되돌려주는 함수를 실현합니다.
    이 함수를 호출하여 Answer 메소드의 인터페이스를 사용할 수 있습니다.goo에서 사용 가능합니다.
    user.go
    func NewUserUsecase() User {
    	return &user{}
    }
    
    type User interface {
        Answer() (string, error)
    }
    
    type user struct {
    	// もしuser の持つロジックが別のパッケージに依存する場合はここに記述
    }
    
    func (receiver *user) Answer() (string, error) {
    	return "Answerメソッドが呼ばれました", nil
    }
    

    4. main.goo에서 New 함수 호출


    main.go
    package main
    
    import "fmt"
    
    func main() {
    	userUsecase, nil := usecase.NewUserUsecase()
    	fmt.Println(userUsecase.Answer()) // "Answerメソッドが呼ばれました"
    }
    
    

    끝말


    이상은 의존성의 주입이다.
    main.go에서usecase까지.go에 대한 의존은 사용자 구조체가 가지고 있는 논리가 아니라 User 인터페이스를 향한 것이다.
    User 인터페이스에서 정의한 Answer 함수를 호출한 후 우연히 이 함수를 구현하는 사용자 구조의 Answer 메소드 로직을 호출했습니다.의 형식.

    좋은 웹페이지 즐겨찾기