Hướng dẫn Strategy Pattern với ví dụ đơn giản

Leave a Comment

Hướng dẫn Strategy Pattern với ví dụ đơn giản

Strategy pattern thuộc nhóm mẫu hành vi(behavioural pattern), nó được dùng để quản lý các thuật toán, mối liên quan giữa các object với nhau.

Khái niệm: Strategy pattern là một họ các thuật toán được gói gọn trong 1 object và dễ dàng thay đổi linh hoạt các thuật toán bên trong object.




Lược đồ Strategy pattern - diagram definition of the Strategy pattern

Theo lược đồ trên thì Context được tạo bởi Strategy. Phần Context có thể có bất cứ thứ gì khi nó yêu cầu thay đổi hành vi. Strategy đơn giản là interface, vì thế chúng ta có thể hoán đổi các thuật toán ConreteStrategy mà không ảnh hưởng tới Context.



Lược đồ hoạt động Strategy Pattern

Dùng Context từ client có nhiều hướng dùng, client có thể gọi Context, sau đó Context tự quyết định việc xử lý tiếp theo thay cho client. Tốt hơn là để nguyên quyết định này của Context, vì nó loại bỏ các câu lệnh chuyển đổi kiểu mà chúng ta đã thấy trong Factory pattern như hình dưới.


Khi nào dùng mẫu strategy pattern này:

Strategy pattern được dùng khi bạn muốn chọn thuật toán để chạy lúc runtime. Dùng tốt cho việc lưu file ở các định dạng khác nhau, chạy nhiều loại thuật toán sắp xếp, hay nén file.

Ví dụ Strategy pattern (java) về công cụ nén file (file compression tool) để tạo ra file .zip hay .rar

Đầu tiên ta cần strategy:
//Strategy Interface
public interface CompressionStrategy {
  public void compressFiles(ArrayList<File> files);
}
Sau đó ta cung cấp 2 implementation cho zip và rar
public class ZipCompressionStrategy implements CompressionStrategy {
  public void compressFiles(ArrayList<File> files) {
    //using ZIP approach
  }
}
public class RarCompressionStrategy implements CompressionStrategy {
  public void compressFiles(ArrayList<File> files) {
    //using RAR approach
  }
}
Đối tượng context sẽ cung cấp lựa chọn cho client để nén file. Nó như là thiết lập định dạng nén của phần mềm tương ứng với thuật toán nén sẽ được dùng. Chúng ta có thể thay đổi thuật toán từ lớp strategy khi dùng phương thức setCompressionStrategy trong Context.
public class CompressionContext {
  private CompressionStrategy strategy;
  //this can be set at runtime by the application preferences
  public void setCompressionStrategy(CompressionStrategy strategy) {
    this.strategy = strategy;
  }
  
  //use the strategy
  public void createArchive(ArrayList<File> files) {
    strategy.compressFiles(files);
  }
}
Các client có thể nén file theo mong muốn với CompressionContext
public class Client {
  public static void main(String[] args) {
    CompressionContext ctx = new CompressionContext();
    //we could assume context is already set by preferences
    ctx.setCompressionStrategy(new ZipCompressionStrategy());
    //get a list of files...
    ctx.createArchive(fileList);
  }
}
Nguồn: dzone.com/articles/design-patterns-strategy





Xem Tiếp

Chuyển đổi video từ kênh Youtube chính sang kênh phụ

Leave a Comment

Chuyển đổi video từ kênh Youtube chính sang kênh phụ

Hiện tại mình muốn phát triển 1 kênh mới để kiếm tiền. Tuy nhiên mình muốn lấy toàn bộ video của kênh cũ để chuyển đổi sang kênh mới. Vậy điều này có được không? Có vi phạm gì trong điều khoảng của YouTube không?


Việc bạn muốn chuyển toàn bộ video từ một kênh YouTube này sang một kênh YouTube khác có thể do những nguyên nhân sau.
Nguyên nhân khách quan là do kênh của bạn đang làm đã có một vài cảnh bảo xấu, hay vi phạm nguyên tắc cộng đồng. Điều này có thể chưa dẫn tới vô hiệu hóa hoàn toàn việc kiếm tiền trên các video. Tuy nhiên bạn muốn chuyển đổi toàn bộ video này sang một kênh mới nhằm "làm sạch" để thông tin trên kênh mới và toàn bộ video đó của bạn ở trạng thái tốt nhất.
Giả thiết kênh có video cần chuyển là kênh A. Kênh mới lập để chuyển video sang là kênh B
Trước hết bạn hãy xem lại trong thông tin của kênh A có mục Content ID đang ở tình trạng như thế nào. Nếu nó có nút màu xanh báo hiệu rằng kênh của bạn đã bật Content ID thì toàn bộ video trên kênh A này đã được YouTube quản lý. Việc bạn dùng video của kênh A để mang sang kênh B sẽ bị khuyến cáo Conten ID claim. Chi tiết về Content ID được YouTube giải thích tại đây.
https://support.google.com/youtube/answer/2797370?hl=en
Vậy trong trường hợp này giải pháp sẽ là. Bạn hãy dùng tính năng bản quyền trên mỗi video. Bạn chỉnh tất cả các video của kênh A thành bản quyền ghi nhận tác giả. Với bản quyền này bạn hoàn toàn dễ dàng tái sử dụng video đó mang sang bất kỳ kênh nào khác nếu muốn.
Chú ý: Nếu bạn không muốn có ai đó cũng sử dụng lại những video đó thì bạn hãy để toàn bộ video của kênh A ở trạng thái riêng tư (private) và bạn hãy cấp quyền cho tài khoản kênh B có thể xem. Khi đó kênh B có thể tái dùng video trên kênh A với bản quyền ghi tác giả trên mỗi video.
Bạn cần kiểm tra video trên kênh B đã đúng và có thể bật đầy đủ các tính năng kiếm tiền và công khai. Trước khi bạn quyết định xóa những video đó ở kênh A
Nguyên nhân chủ quan là do bạn muốn có chiến lược phát triển kênh mới và muốn thay đổi hiện trạng kênh A. Bạn muốn tìm kiếm thị trường người xem mới. Tất nhiên trong tình trạng kênh tốt, mọi video đều do bạn làm ra và không có bất kỳ sự vi phạm đáng kể nào.
Trong trường hợp này bạn hoàn toàn có thể dùng cách chuyển đổi giống như trên. Thay đổi thông tin ghi nhận bản quyền video và chuyển sang kênh B. 
Đối với trường hợp Content ID kênh A chưa bật. Bạn có thể không phải chuyển đổi theo phương pháp thay đổi bản quyền video. Bạn hãy dùng lại ngay video đó bằng các tải về và up lên trên YouTube, hoặc lấy những video đang có trên máy tính bạn từ trước đó. Sau khi tải lên bạn có thể xóa video cũ trên kênh A.
Tham khảo tại đây: http://www.quora.com/Is-it-possible-transfer-a-video-from-one-YouTube-channel-to-another
Nguồn: vietnoiviet.com/content/hoi-ve-viec-chuyen-doi-video-tu-kenh-chinh-sang-kenh-phu-va-nguoc-lai
Xem Tiếp