2013-07-22 43 views
5

Đây là vấn đề chung mà tôi đang cố gắng giải quyết:Cách triển khai Mẫu chiến lược trong Go?

  1. Một tập hợp gói đang thu thập dữ liệu từ một nguồn và gửi đến nhiều kênh.
  2. Tập hợp các gói thứ hai đang thu thập dữ liệu từ nhiều kênh và ghi nó vào một nguồn. Tập hợp các gói này sẽ cần dịch dữ liệu từ nhiều định dạng.

Điều này có vẻ như là một trường hợp hoàn hảo cho Mô hình chiến lược nhưng tôi không chắc cách tốt nhất để thực hiện công việc trong Go.

Trả lời

11

Nói chung; không bị lạc trong các mẫu và giao thức để xây dựng các ứng dụng Go. Ngôn ngữ giúp dễ diễn đạt và dễ hiểu. Hầu hết thời gian xác định giao diện vững chắc làm cho mọi thứ linh hoạt.

Tuy nhiên, đây là một ví dụ về mô hình chiến lược Go:

Xác định một giao diện cho hành vi của các chiến lược:

type PackageHandlingStrategy interface { 
    DoThis() 
    DoThat() 
} 

Thực hiện chiến lược đó:

type SomePackageHandlingStrategy struct { 
    // ... 
} 

func (s *SomePackageHandlingStrategy) DoThis() { 
    // ... 
} 

func (s *SomePackageHandlingStrategy) DoThat() { 
    // ... 
} 

Và sau đó , nhúng & hellip;

type PackageWorker struct { 
    SomePackageHandlingStrategy 
} 

func (w *PackageWorker) Work() { 
    w.DoThis() 
    w.DoThat() 
} 

& hellip; hoặc chuyển chiến lược & hellip;

type PackageWorker struct {} 

func (w *PackageWorker) Work(s PackageHandlingStrategy) { 
    s.DoThis() 
    s.DoThat() 
} 

& hellip; cho nhân viên của bạn.

+0

Câu trả lời hay, cảm ơn! Không phải là quá nhiều bị mất trong mô hình như tôi biết đây là một vấn đề được giải quyết trong một số thời trang. Cảm ơn một lần nữa. – KevDog

+1

Nhưng làm cách nào để bạn tải chiến lược động? Nếu tôi cần phải tải một chiến lược dựa trên cấu hình trong trang web, làm thế nào được thực hiện trong đi? Từ những gì tôi thấy không có cách nào để tải một gói động trong golang. Hoặc là có một cách khác? – Madhan

+1

@Madhan sử dụng câu lệnh chuyển đổi. – thwd

Các vấn đề liên quan