Việt Trần
Việt Trần
  • Видео 64
  • Просмотров 268 499
Design pattern with Go - Interpreter pattern
Interpreter pattern thường được sử dụng trong các ứng dụng diễn dịch các câu hay syntax thành các object tree, để từ đó có thể thực hiện một số phép tính toán hay đánh giá (evaluate).
Trong video này mình sẽ ví dụ với một chương trình máy tính cơ bản, nhập vào một biểu thức dưới dạng string: "3 + 6 - 2" và trả về kết quả "7".
Просмотров: 975

Видео

Design pattern with Go - Memento pattern
Просмотров 628Год назад
Memento là pattern giúp chúng ta có thể mô hình state của object có nhu cầu lưu trữ (save) và khôi phục (restore) một cách hiệu quả.
Design pattern with Go - Command pattern
Просмотров 589Год назад
Command pattern là một trong những pattern quan trọng. Chúng ta có thể mô hình hoá (modeling) các action thành các command object để có thể dễ quản lý hơn: delay, queue, undo,...
Design pattern with Go - Mediator pattern
Просмотров 716Год назад
Khi có nhiều object cần phối hợp với nhau để thực hiện các công việc nào nó, thay vì để chúng giao tiếp với nhau trực tiếp sẽ rất rối loạn. Từ đó chúng ta cần có một "điều phối viên" để làm việc này. Đó chính là Mediator design pattern.
Design pattern with Go - State pattern
Просмотров 706Год назад
Khi nói đến "Finite-State Machine", chúng ta sẽ gặp một số vấn đề với logic chuyển đổi từ state này đến state khác. Bên cạnh đó, các state này ảnh hưởng tới các hành vi của các object. Mỗi state có nhiều ràng buộc cụ thể khác nhau. Từ đó chúng ta sẽ cần mô hình hoá các state trở thành những object thay vì chỉ là một attribute đơn thuần. Đó chính là State pattern.
Design pattern with Go - Observer pattern
Просмотров 813Год назад
Observer pattern là một cơ chế "lắng nghe/quan sát" các thay đổi từ object (thường gọi là subject) từ nhiều object khác (gọi là observer). Trong ví dụ video mình đưa ra là trường hợp các Developer (observer) theo dõi các job mới từ công ty tuyển dụng việc làm IT.
Design pattern with Go - Proxy pattern
Просмотров 644Год назад
Proxy pattern được ứng dụng trong các trường hợp chúng ta đã có một object gốc (original object). Chúng ta muốn tăng thêm logic thực hiện trước hoặc sau khi đi qua object gốc thì nên dùng pattern này. VD: - Database là org object, cache ngay trước nó có thể dùng proxy. - Payment là org object, logic check trước khi thực hiện payment có thể dùng proxy. - Khi write data và db, chúng ta có thể dùn...
Design pattern with Go - Template Method pattern
Просмотров 540Год назад
Template Method pattern là một pattern cực kì phổ biến. Ngay từ các tên của nó cũng lý giải được "template" là phần chung, giống nhau giữa các instance và được khai báo trong một abstract super class. Các bước khác nhau chúng ta sẽ khai báo trong các subclass, chúng sẽ phải override để tự implement lại phần khác biệt này.
Design pattern with Go - Visitor pattern
Просмотров 832Год назад
Visitor pattern giúp chúng ta có thể tăng thêm các method, hành vi vào các object/class hiện có mà không cần phải thay đổi chúng.
Design pattern with Go - Adapter pattern
Просмотров 1,1 тыс.Год назад
Adapter pattern là một trong những pattern được sử dụng nhiều nhất, cả phần mềm lẫn hệ thống. Khi có nhu cầu "đấu nối" giữa các module hoặc các subsystem có interface không tương thích, chúng ta không nên refactor chúng mà thay vào đó là viết các lớp trung gian adapter. Lớp trung gian adapter này trong các hệ thống phân tán thường được biết với một các tên "sang" hơn: Anti-corruption Layer.
Design Pattern with Go - Bridge pattern
Просмотров 867Год назад
Bridge pattern sẽ giúp chúng ta cấu trúc các object có độ phức tạp và tần suất thay đổi cao thành 2 phần: Abstraction và Implementation. Việc hiểu được 2 thành phần này không dễ với các bạn mới. Mình hy vọng qua video này mình sẽ giúp bạn phân biệt đâu là Abstraction, đâu là Implementation nhé!
Design pattern with Go - Iterator pattern
Просмотров 956Год назад
Iterator pattern thường được sử dụng khi có nhu cầu duyệt các element trong các cấu trúc dữ liệu: array, linked-list, tree, graph, set, queue, stack,...
Design pattern with Go - Option function pattern
Просмотров 623Год назад
Option pattern rất thường thấy trong Go. Pattern này giúp khởi tạo các struct phức tạp nhằm mục đích: 1. Khi có quá nhiều tham số, config, optional trong hàm New, chúng ta muốn không quan tâm tới thứ tự tham số truyền vào cũng như có thể bỏ qua (optional). 2. Phục vụ cho việc khởi tạo là đầy đủ, tránh New xong rồi mới đi set từng module vào.
Design Pattern with Go - Builder pattern
Просмотров 1,5 тыс.Год назад
Builder pattern thuộc nhóm creational patterns, giúp "xây dựng" những object phức tạp. Trong thực tế mình hay sử dụng pattern này cho các trường hợp như construct Order, Product, Service, SearchResult. Những object này có nhiều thành phần được tổng hợp từ nhiều nơi khác, có thể gọi tuần tự hoặc concurrency.
Design Pattern with Go - Prototype pattern
Просмотров 906Год назад
Prototype pattern trong nhóm creational, hỗ trợ khởi tạo các object dựa trên việc copy từ object đã có mà không bị lệ thuộc vào các object này. Khi muốn thực hiện một "Deep Copy", chúng ta cần thiết kế một hàm "Clone" để trả về một object copy hoàn toàn từ object hiện tại. Đây chính là một implementation của Prototype pattern.
Design Pattern with Go - Facade pattern
Просмотров 1,1 тыс.Год назад
Design Pattern with Go - Facade pattern
Design Pattern with Go - Singleton pattern
Просмотров 1,4 тыс.Год назад
Design Pattern with Go - Singleton pattern
Design Pattern with Go - Chain of Responsibility pattern
Просмотров 1,2 тыс.Год назад
Design Pattern with Go - Chain of Responsibility pattern
Design Pattern with Go - Decorator pattern
Просмотров 1,6 тыс.Год назад
Design Pattern with Go - Decorator pattern
Design Pattern with Go - Composite pattern
Просмотров 1,4 тыс.Год назад
Design Pattern with Go - Composite pattern
Design Pattern with Go - Flyweight pattern
Просмотров 1,7 тыс.Год назад
Design Pattern with Go - Flyweight pattern
Design Pattern with Go - Abstract Factory pattern
Просмотров 2,5 тыс.Год назад
Design Pattern with Go - Abstract Factory pattern
Design Pattern with Go - Factory Method pattern
Просмотров 2,8 тыс.Год назад
Design Pattern with Go - Factory Method pattern
Design Pattern with Go - Strategy pattern
Просмотров 4,3 тыс.Год назад
Design Pattern with Go - Strategy pattern
Design Pattern with Go - Vì sao cần biết Design Pattern
Просмотров 6 тыс.Год назад
Design Pattern with Go - Vì sao cần biết Design Pattern
Component Diagram UML - Hệ thống lớn hình thành từ nhiều component nhỏ
Просмотров 6 тыс.Год назад
Component Diagram UML - Hệ thống lớn hình thành từ nhiều component nhỏ
Class Diagram UML - Cực kỳ quan trọng trong thiết kế phần mềm
Просмотров 18 тыс.Год назад
Class Diagram UML - Cực kỳ quan trọng trong thiết kế phần mềm
Use Case Diagram - Ứng dụng và các lỗi sai thường gặp
Просмотров 12 тыс.Год назад
Use Case Diagram - Ứng dụng và các lỗi sai thường gặp
UML Diagram - Các diagram quan trọng trong thiết kế hệ thống
Просмотров 955Год назад
UML Diagram - Các diagram quan trọng trong thiết kế hệ thống
SA - SOLID và ứng dụng thực tế
Просмотров 12 тыс.Год назад
SA - SOLID và ứng dụng thực tế

Комментарии

  • @LongHoang-ud4rd
    @LongHoang-ud4rd 6 дней назад

    quá hay

  • @thienvu1377
    @thienvu1377 7 дней назад

    Cho e hỏi Clean Architecture khác gì với Hexagonal Architecture vậy ạ

  • @nghiabasil
    @nghiabasil 12 дней назад

    perfect. I hope you will release more video about Golang

  • @hieuvoiuem
    @hieuvoiuem 19 дней назад

    a cho em hỏi khi sử dụng association hai chiều thì trong hai class phải có thuộc tính là của class kia đúng ko ạ

  • @Dev_and_symphony
    @Dev_and_symphony 28 дней назад

    Anh có thể làm luôn một series về system design được không ạ, chia sẻ của anh rất hay

  • @monstersuper3109
    @monstersuper3109 Месяц назад

    In Go, statements are separated by ending a line (hitting the Enter key) or by a semicolon ";". Hitting the Enter key adds ";" to the end of the line implicitly (does not show up in the source code).

  • @kietnguyen6491
    @kietnguyen6491 Месяц назад

    ơi trời, thầy lớp em giảng viên có bằng thạc sĩ mà giảng nghe thấy nản. May sao lên đây kiếm video ôn thi gặp được video này

  • @MenesDuong
    @MenesDuong 2 месяца назад

    Em là sinh viên mới ra trường, mặc dù chưa đi làm nhưng lại hứng thú với các thành phần kiến trúc như thế này, cảm ơn anh đã chia sẻ.

  • @cungthanhlaptrinh
    @cungthanhlaptrinh 2 месяца назад

    Em vẫn chưa hiểu đoạn mũi tên include lắm. Order coffe hướng include tới View Catalog: Tức là khi nào đặt đơn hàng thì cần show ra thông tin để chọn. Còn PayCheckout hướng include tới Order coffe: Tức là để thanh toán đơn hàng cần phải có đơn order coffe à?

  • @ThangPhan-q3u
    @ThangPhan-q3u 2 месяца назад

    Dạ thanks you a Nhiều ạ, từ nay e sẽ apply diagram này vào khi trước khi thực hiện implement một feature mới trong dự án ạ :)

  • @nvtentertainment4098
    @nvtentertainment4098 3 месяца назад

    em dùng spring boot hay áp dụng mấy nguyên lý này với vài design pattern, nhưng cái thứ 3 "L" vẫn chưa dùng tới

  • @MinhNH613
    @MinhNH613 3 месяца назад

    Giọng của bác giống bên kênh phân tích game

  • @quang-x4l
    @quang-x4l 3 месяца назад

    cách học ntn vậy bro đọc ở roadmap hay lên web đọc hết docs của nó

  • @quang-x4l
    @quang-x4l 3 месяца назад

    anh cho em hỏi cần build project ntn để xin intern /fresher dc ạ

  • @bongcaixanh1305
    @bongcaixanh1305 3 месяца назад

    đoạn này hơi khó hiểu, phải nhờ AI giải thích

  • @GmePot
    @GmePot 3 месяца назад

    nếu có từ 2 usecase trở lên thì không biết anh sẽ tổ chức cấu trúc thư mục như thế nào, mong anh hướng dẫn

  • @nvtndev524
    @nvtndev524 4 месяца назад

    hay quá anh, a có thể thêm phần impleement cho ngôn ngữ khác đc nữa ko (ex: java,..)

  • @nvtndev524
    @nvtndev524 4 месяца назад

    như thế này lại cần thêm một Factory để check notifier Type là email, sms, ... để trả về đúng notify service nào

  • @quanphamanh957
    @quanphamanh957 4 месяца назад

    For bọc ngoài selector là một vòng lặp vô hạn phải không ạ

  • @tunisp282
    @tunisp282 4 месяца назад

    Video của anh thực sự hay

  • @lyhoangdong0909020227
    @lyhoangdong0909020227 4 месяца назад

    Thanks! Video hay quá mà thấy ít like cho bạn quá!!!

  • @quanphamanh957
    @quanphamanh957 4 месяца назад

    Phút 26:38, Trong map của C++ nếu người dùng truy xuất lấy giá trị một Key chưa tồn tại thì trước tiên map sẽ thêm Key đó với giá trị default rồi trả về giá trị default đó ạ.

  • @VietLe-x6r
    @VietLe-x6r 4 месяца назад

    Ah cho e hỏi về cú pháp fmt.Println(a...:) với ạ, khi code trên VScode mà viết như vậy thì e thấy báo lỗi, không biết là vì sao ạ

    • @viettx
      @viettx 4 месяца назад

      ý em là: fmt.Println(a, b, c) hay là Println(a...)??

  • @DungLe-pz3nz
    @DungLe-pz3nz 5 месяцев назад

    Rất dễ hiểu, ngắn gọn, xúc tích, đi thẳng vào vấn đề. Cảm ơn anh về chia sẻ bổ ích này ạ

  • @shyforlov9123
    @shyforlov9123 5 месяцев назад

    cảm ơn bài giảng của a

  • @Nam-k7h
    @Nam-k7h 5 месяцев назад

    nếu mà mình lỡ nhầm port khác ở phía container thì có sao không ạ

  • @haikimlongtran6900
    @haikimlongtran6900 5 месяцев назад

    cảm ơn anh vì video anh hướng dẫn rất chi tiết ạ !

  • @nguyenucminh8993
    @nguyenucminh8993 5 месяцев назад

    Kiến thức anh chia sẻ hay và dễ hiểu +1 respect ạ!

  • @huyhuynhuc1122
    @huyhuynhuc1122 5 месяцев назад

    Những kiến thức để thiết kế System như này , nếu không có cơ hội được làm việc trong project thì có cơ may nào để tự học, tự tìm hiểu k a? Dạ e cảm ơn a nhiều

  • @NguyenMinh-jc2iv
    @NguyenMinh-jc2iv 5 месяцев назад

    super meaningful

  • @loongphuong
    @loongphuong 5 месяцев назад

    Em cũng sử dụng DI trong dự án mà không biết là Clean Architecture. Cảm ơn anh về các bài chia sẻ của anh rất bổ ích ❤

  • @quando1578
    @quando1578 6 месяцев назад

    Thankiu so much for your sharing <3

  • @voduycuong93
    @voduycuong93 7 месяцев назад

    khi class service.go nằm bên infras thì có vi phạm clean architechture không bạn, và nếu có thì vi phạm thế nào?

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    hay quá anh ơi

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hay quá anh

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    hay quá anh ạ

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hay anh ơi

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hay anh ạ

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hay anh ạ

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hay quá ạ

  • @binhnguyenthanh5279
    @binhnguyenthanh5279 7 месяцев назад

    Hóng anh làm thêm các chủ đề khác về Golang ạ

  • @Huỳnh-n7q
    @Huỳnh-n7q 7 месяцев назад

    A ơi! em bị yếu về mấy thứ kiến trúc này. Em xem nhiều mà không hiểu rõ. Em nghĩ là em nên học lại cho chắc phần kiến trúc. Anh cho em lời khuyên em nên bắt đầu từ đâu ạ

  • @OnceUponKid
    @OnceUponKid 7 месяцев назад

    nếu không đánh id cho nó thì lsao remove được nó ra vậy anh.(kiểu như ngta bấm unlike thì xử lý sao)

    • @dangquyit
      @dangquyit Месяц назад

      như trên thì primary key là user_id và item_id nếu remove đơn giản remove theo cặp đấy thôi ví dụ xóa user ra khỏi item DELETE: /items/:itemId/users/:userId từ đấy lấy được userId và itemId để xóa

  • @OnceUponKid
    @OnceUponKid 7 месяцев назад

    xong cái list này là bắt đầu vô thực hành luôn được rồi hả mọi người

  • @28.nguyenhoang68
    @28.nguyenhoang68 7 месяцев назад

    Anh cho em hỏi phút thứ 5.30 thì return encoder.endcode(this) thì nó biết phải implement class nào để encode ạ.

  • @grastnguyen4045
    @grastnguyen4045 7 месяцев назад

    Em cảm ơn anh, bài giảng rất dễ hiểu ạ

  • @minhtrduc
    @minhtrduc 7 месяцев назад

    Cám ơn những chia sẻ bổ ích của anh 🎉

  • @cntt44e-lethihoaquyen53
    @cntt44e-lethihoaquyen53 7 месяцев назад

    Hay nha