package post
type Service interface {
ListPosts() ([]*Post, error)
}
type service struct {
conn *grpc.ClientConn
}
func NewService(conn *grpc.ClientConn) Service {
return &service{
conn: conn,
}
}
func (s *service) ListPosts() ([]*Post, error) {
posts, err := s.conn.ListPosts(...)
if err != nil {
return []*Post{}, err
}
return posts, nil
}
实现了3方的解耦,即定义方(A)可以定义参数为Service,使用者(B)可以灵活初始化实现了Service接口的结构体,然后传给定义方的调用方(C)即可。