Cảm ơn bạn đã chia sẻ , mình chắt sắp tới có thời gian sẽ liên thông đại học , hình thức online . Chủ yếu là ở cái bằng cấp , chứ mình cũng không quan trọng sẽ học thêm gì cả.
@Tafi Xem ra tôi nhầm lẫn giữa 2 biến thể của Factory Method. Vài dự án gần đây khi không thể chuyển Factory Method sang hướng Factory class, đã củng cố thêm ý tưởng rằng hai cách trên là hai mẫu khác nhau, và ngộ nhận Factory class thành Abstract Factory.
Một số tài liệu không giữ cái tên Factory Method mà đơn giản gọi các class Factory là Factory pattern. Hai biến thể nhưng khác nhau hoàn toàn trong cài đặt và ý đồ:
Factory Method cài đặt qua thừa kế, người cài đặt biết chính xác cần tạo instance như thế nào.
Factory không cần thừa kế, ẩn giấu đi sự phức tạp của việc khởi tạo instance.
Hai mẫu đều cung cấp 1 gói lợi ích theo ngữ cảnh, nhưng Factory phổ biến hơn, đồng thời tăng độ phức tạp nếu so với Factory Method.
Phần bình luận về Factory Method là sai. Đoạn code trên không phải Abstract Factory mà là một biến thể của Factory Method, hay gần nghĩa hơn, chỉ là Factory (trong khi Factory Method nhấn mạnh Method và cài đặt sử dụng một phương thức). Cả hai cách cài đặt dùng phương thức và class của Factory Method đều cung cấp một gói lợi ích theo ngữ cảnh, nhưng có sự khác nhau rõ rệt trong cách cài đặt:
Factory không cần thông qua thừa kế, ẩn dấu đi sự phức tạp.
Factory Method thông qua sự thừa kế, người cài đặt hiểu rõ sự phức tạp.
@teracom22 Vấn đề nằm ở chỗ helmet của Home có được tải về và run trước nên nhận Home làm chuẩn. Cách giải quyết là điểu chỉnh lazy load phù hợp để chỉ tải và chạy helmet của About.
Dùng PUT hay PATH trong trường hợp chúng ta chỉ định những trường nào trong DB được Update thì nó cũng ko có ý nghĩa.
Nhưng trong trường hợp để chỉ định phương thức nào cho phân quyền User hoặc thể hiện chuẩn của Restful thì nó mới có ý nghĩa.
Ông không tin vào tài liệu đấy thì tôi với ông trao đổi với nhau bằng tài liệu official của GoF Design patterns Elements of Reusable Object-Oriented Software
1. Họ (families) trong abstract factory
Diagram trên có 2 họ: Motif và PM
Có 2 class cha là Window và Scrollbar
Motif Window và Motif Scrollbar hoàn toàn khác nhau, nhưng chung 1 họ là Motif
Tương tự PM Window và PM Scrollbar hoàn toàn khác nhau nhưng chung 1 họ là PM
Như vậy mối quan hệ giữa các class con chung 1 class cha không được gọi là họ, các class khác nhau nhưng có liên quan đến nhau mới được gọi là họ.
Mục đích của abstract fatory là giải quyết vấn đề này.
Intent của abstract factory
Provide an interface for creating families of related or dependent objects without specifying their concrete classes.
Trích từ Design patterns Elements of Reusable Object-Oriented Software - GoF
Intent của factory method
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
Trích từ Design patterns Elements of Reusable Object-Oriented Software - GoF
Rõ ràng các ví dụ trên không liên quan đến một họ nào cả, mà chỉ tập trụng vào việc client không cần biết instance của class con nào được tạo, nhiệm vụ của nó là tương tác với các method của class cha cung cấp.\
Scope của Factory method: các subclass
Scope của Abstract factory: các families của các class
2. Biến thể
Như đã trình bày ở trên, diagram này là diagram tổng quát, các biến thể khác có thể tồn tại, chỉ cần nó đáp ứng được ý đồ của pattern gốc đưa ra. Các ví dụ khác hoàn toàn đáp ứng được điều này
3. Về tác giả
Alexander Shvets là tác giả của 5 cuốn sách chuyên về design pattern và best practices. Các ví dụ trên được trích từ cuốn sách Dive Into Design Patterns xuất bản lần đầu 2018, được tái bản và dịch ra nhiều ngôn ngữ khác ngoài tiếng Anh như tiếng Nhật, tiếng Trung.
Nói về độ tin cậy thì tôi đánh giá tác giả uy tín hơn ông bạn rồi. Ông có tin không nếu cuốn sách có sai sót mà vẫn tái bản nhiều lần và được rate 4.7 sao trên goods read?
Tôi cũng là subcriber của ông một thời gian rồi, đọc các bài viết của ông thấy ông có hiểu biết rất sâu về những mảng này. Nhưng lần này có thể ông có nhầm lẫn gì rồi
Bài flow fast ví dụ 2 thuật toán không đúng lắm, tác giả xem lại. Nói chung bài viết nói cũng rõ vài thứ cơ bản thôi.
Góp ý thêm với tác giả, thuật toán quan trọng nhất là chứng minh. Tác giả nên chứng minh nó đúng rồi code.
Thường mình dùng chứng minh phản chứng hoặc trao đổi (exchange argument) giống CF.
Cảm ơn tác giả
THẢO LUẬN
Cảm ơn bạn đã chia sẻ , mình chắt sắp tới có thời gian sẽ liên thông đại học , hình thức online . Chủ yếu là ở cái bằng cấp , chứ mình cũng không quan trọng sẽ học thêm gì cả.
Viết bài bằng chat gpt à @@
sorry bạn cái vấn đề này chắc mình không giải quyết được như kiểu lấy lại tiền hoặc là tìm ra kẻ đầu têu ấy
Anh ơi, em cần anh giúp đỡ vấn đề liên quan đến web lừa đảo. Anh có thể liên hệ với em qua zalo 0973376774 không ạ?
@thangtd90 cách làm của bạn ko chạy đc với 100 số nguyên
hay
vãi cả dịch =))
🤩
Hay quá bác, hóng các bài viết tiếp theo
)
cảm ơn bạn đã feedback mình sẽ kiểm tra lại và sửa lại chính tả
@refacore Oke bro
@Tafi Xem ra tôi nhầm lẫn giữa 2 biến thể của Factory Method. Vài dự án gần đây khi không thể chuyển Factory Method sang hướng Factory class, đã củng cố thêm ý tưởng rằng hai cách trên là hai mẫu khác nhau, và ngộ nhận Factory class thành Abstract Factory.
Một số tài liệu không giữ cái tên Factory Method mà đơn giản gọi các class Factory là Factory pattern. Hai biến thể nhưng khác nhau hoàn toàn trong cài đặt và ý đồ:
Hai mẫu đều cung cấp 1 gói lợi ích theo ngữ cảnh, nhưng Factory phổ biến hơn, đồng thời tăng độ phức tạp nếu so với Factory Method.
Phần bình luận về Factory Method là sai. Đoạn code trên không phải Abstract Factory mà là một biến thể của Factory Method, hay gần nghĩa hơn, chỉ là Factory (trong khi Factory Method nhấn mạnh Method và cài đặt sử dụng một phương thức). Cả hai cách cài đặt dùng phương thức và class của Factory Method đều cung cấp một gói lợi ích theo ngữ cảnh, nhưng có sự khác nhau rõ rệt trong cách cài đặt:
@teracom22 Vấn đề nằm ở chỗ helmet của Home có được tải về và run trước nên nhận Home làm chuẩn. Cách giải quyết là điểu chỉnh lazy load phù hợp để chỉ tải và chạy helmet của About.
làm blog bằng nó cần nhiều models 0
@phatlt.unit @PhongPhamdt đúng rùi ạ, cái này mình chưa đọc kỹ. Thanks mọi người nhiều, phần phía sau có vấn đề gì không mọi người nhỉ????
Dùng PUT hay PATH trong trường hợp chúng ta chỉ định những trường nào trong DB được Update thì nó cũng ko có ý nghĩa. Nhưng trong trường hợp để chỉ định phương thức nào cho phân quyền User hoặc thể hiện chuẩn của Restful thì nó mới có ý nghĩa.
Ông không tin vào tài liệu đấy thì tôi với ông trao đổi với nhau bằng tài liệu official của GoF
Design patterns Elements of Reusable Object-Oriented Software
1. Họ (families) trong abstract factory
Diagram trên có 2 họ: Motif và PM
Có 2 class cha là Window và Scrollbar
Motif Window và Motif Scrollbar hoàn toàn khác nhau, nhưng chung 1 họ là Motif
Tương tự PM Window và PM Scrollbar hoàn toàn khác nhau nhưng chung 1 họ là PM
Như vậy mối quan hệ giữa các class con chung 1 class cha không được gọi là họ, các class khác nhau nhưng có liên quan đến nhau mới được gọi là họ.
Mục đích của abstract fatory là giải quyết vấn đề này.
Intent của abstract factory
Intent của factory method
Rõ ràng các ví dụ trên không liên quan đến một họ nào cả, mà chỉ tập trụng vào việc client không cần biết instance của class con nào được tạo, nhiệm vụ của nó là tương tác với các method của class cha cung cấp.\
Scope của Factory method: các subclass
Scope của Abstract factory: các families của các class
2. Biến thể
Như đã trình bày ở trên, diagram này là diagram tổng quát, các biến thể khác có thể tồn tại, chỉ cần nó đáp ứng được ý đồ của pattern gốc đưa ra. Các ví dụ khác hoàn toàn đáp ứng được điều này
3. Về tác giả
Alexander Shvets là tác giả của 5 cuốn sách chuyên về design pattern và best practices. Các ví dụ trên được trích từ cuốn sách Dive Into Design Patterns xuất bản lần đầu 2018, được tái bản và dịch ra nhiều ngôn ngữ khác ngoài tiếng Anh như tiếng Nhật, tiếng Trung.
Nói về độ tin cậy thì tôi đánh giá tác giả uy tín hơn ông bạn rồi. Ông có tin không nếu cuốn sách có sai sót mà vẫn tái bản nhiều lần và được rate 4.7 sao trên goods read?
Tôi cũng là subcriber của ông một thời gian rồi, đọc các bài viết của ông thấy ông có hiểu biết rất sâu về những mảng này. Nhưng lần này có thể ông có nhầm lẫn gì rồi
Một bài khá hay về System of difference constraints https://atcoder.jp/contests/agc056/tasks/agc056_c
Bài flow fast ví dụ 2 thuật toán không đúng lắm, tác giả xem lại. Nói chung bài viết nói cũng rõ vài thứ cơ bản thôi. Góp ý thêm với tác giả, thuật toán quan trọng nhất là chứng minh. Tác giả nên chứng minh nó đúng rồi code. Thường mình dùng chứng minh phản chứng hoặc trao đổi (exchange argument) giống CF. Cảm ơn tác giả