Giới thiệu Trong quá trình làm VueJS NuxtJS hay thậm chí là Laravel mình cũng hay áp dụng các pattern như Service hoặc Repository. Mình cũng đã trải nghiệm qua thằng Angular, và thực sự nó support các pattern này khá tốt và theo khuôn khổ. Với VueJS hay Nuxt thì các dev sẽ phải cần có kinh nghiệm và tự dựng bằng tay Bài viết này mình mong muốn chia sẻ về cách sử dụng Service pattern trong NuxtJS mình hay làm...
Happy New Year VueJS Design Pattern nuxtÝ đồ Prototype là một creational design pattern cho phép bạn sao chép các object hiện có mà không làm cho code của bạn phụ thuộc vào các class của chúng. Vấn đề Giả sử bạn có một object và bạn muốn tạo một bản sao của nó. Bạn sẽ làm điều này như thế nào? Đầu tiên, bạn phải tạo một object mới của cùng một class. Sau đó, bạn phải sao chép giá trị của tất cả các trường từ object gốc...
Happy New Year Design PatternTrong bài viết này, chúng ta sẽ cùng tìm hiểu về Adapter Design Pattern qua cấu trúc, cánh triển khai, ví dụ, đánh giá và ứng dụng của nó. Đây là bài viết đầu tiên của mình nên sẽ không tránh khỏi sai sót, rất mong nhận được sự thông cảm và góp ý từ mọi người. 1. Tổng quan 1.1. Phân loại Adapter là 1 design pattern thuộc nhóm Structural Pattern. Structural Pattern bao gồm những pattern cung cấp các...
Design Pattern C# Design Patterns Adapter Pattern Structural Design PatternNhư chúng ta đã biết, Builder pattern là một trong những Design Pattern thuộc về nhóm Creational Pattern - những mẫu thiếu kế cho việc khởi tạo đối tượng của lớp. Design Pattern này sẽ giúp chúng ta tạo mới một đối tượng từ class một cách rõ ràng, linh hoạt. Bên cạnh đó, Data Class là một từ khóa không còn xa lạ với chúng ta ở trong Kotlin. Khi sử dụng Data Class, với từ khóa này, trình biên dịch...
Kotlin Design Pattern May Fest dataDesign Patterns trong C Design Patterns (Thiết Kế Mẫu) không phải là một khái niệm quá xa lạ với người lập trình. Trong Viblo cũng đã có nhiều bài viết chia sẻ về DP. Tuy nhiên khi nói đến DP, thông thường DP hay gắn với các ngôn ngữ lập trình hướng đối tượng. Ngay trong quyển sách Design Pattern - có thể coi là kinh thánh về DP - của Nhóm bộ tứ (Gang of Four), các tác giả cũng nói rằng "DP miêu...
Design Pattern May Fest C language1. Tổng quan "The Chain of Responsibility pattern establishes a chain within a system, so that a message can either be handled at the level where it is first received, or be directed to an object that can handle it." - Gang of Four Chain of Responsibility là một design pattern thuộc nhóm Behavioral Pattern. Behavioral Pattern bao gồm những pattern quan tâm đến hành vi của đối tượng, sự giao tiếp giữa các đối tượng với nhau. Ý tưởng...
Design Pattern Design Principle C# Behavioral Design Pattern Chain of Responsibility PatternChào các bạn, ở phần trước chúng ta đã cùng nhau tìm hiểu qua về Creational patterns và Structural patterns và những trường hợp hay sử dụng chúng ở trong Android. Tiếp theo hôm nay chúng ta sẽ tìm hiểu nốt phần còn lại là Behavioral Patterns và App Architectures nhé. Thôi bắt đầu ngay nào. Behavioral Patterns “Vậy… làm cách nào để biết một class đang chịu trách nhiệm về việc gì?” Behavioral Patterns cho...
Kotlin Android Design Pattern App ArchitecturesDesign Pattern là một giải pháp chung để giải quyết các vấn đề phổ biến khi thiết kế phần mềm trong lập trình hướng đối tượng OOP. Định nghĩa Design pattern là các giải pháp tổng thể đã được tối ưu hóa, được tái sử dụng cho các vấn đề phổ biến trong thiết kế phần mềm mà chúng ta thường gặp phải hàng ngày. Design patterns là một kỹ thuật trong lập trình hướng đối tượng,...
Design Pattern Design Patterns Clean Code lập trình hướng đối tượng Design ParternDesign Pattern là một giải pháp chung để giải quyết các vấn đề phổ biến khi thiết kế phần mềm trong lập trình hướng đối tượng OOP. Định nghĩa Design pattern là các giải pháp tổng thể đã được tối ưu hóa, được tái sử dụng cho các vấn đề phổ biến trong thiết kế phần mềm mà chúng ta thường gặp phải hàng ngày. Design patterns là một kỹ thuật trong lập trình hướng đối tượng,...
Design Pattern Design Patterns Clean Code lập trình hướng đối tượng Design Partern1. Giới thiệu Factory method (hay còn gọi là virtual constructor) là một mẫu thiết kế thuộc nhóm Creational Patterns – những mẫu thiết kế cho việc khởi tạo đối tượng của lớp Khi chúng ta muốn tạo ra một object của một type nào đấy, nhưng chúng ta không biết rõ mình sẽ phải tạo ra cái gì, mà nó phải dựa vào một số điều kiện business logic đầu vào để tạo ra object tương ứng, thì chúng ta...
Design Pattern Design Patterns Creational Patterns Creational Design Pattern Factory method pattern1. Giới thiệu Bridge Pattern là một trong những Pattern thuộc nhóm Structural Pattern. Ý tưởng của nó là tách tính trừu tượng (abstraction) ra khỏi tính hiện thực (implementation) của nó. Từ đó có thể dễ dàng chỉnh sửa hoặc thay thế mà không làm ảnh hưởng đến những nơi có sử dụng lớp ban đầu. Sử dụng Bridge Patern khi chúng ta muốn: Khi bạn muốn tách ràng buộc giữa Abstraction và Implementation,...
Design Pattern Design Patterns Structural Design Pattern Structural Patterns1. Giới thiệu Builder là một mẫu thiết kế thuộc nhóm Creational Pattern – những mẫu thiết kế cho việc khởi tạo đối tượng của lớp Builder Pattern là một mẫu thiết kế được dùng để cung cấp một giải pháp linh hoạt cho các vấn đề tạo đối tượng (object) khác nhau trong lập trình hướng đối tượng. Cho phép bạn xây dựng các đối tượng phức tạp bằng cách sử dụng các đối...
Builder partern Design Pattern Design Patterns Creational Patterns Creational Design Pattern1. Giới thiệu Prototype là một design pattern thuộc nhóm Creational Pattern - những mẫu thiết kế cho việc khởi tạo object của lớp. Prototype quy định loại của các đối tượng cần tạo bằng cách dùng một đối tượng mẫu, tạo mới nhờ vào sao chép đối tượng mẫu này mà không làm cho code phụ thuộc vào các lớp của chúng. Prototype Pattern được dùng khi việc tạo một object tốn nhiều chi phí và...
Design Pattern Design Patterns prototype Creational Design Pattern Prototype Pattern1. Giới thiệu Composite là một mẫu thiết kế thuộc nhóm cấu trúc (Structural Pattern). Composite Pattern là một sự tổng hợp những thành phần có quan hệ với nhau để tạo ra thành phần lớn hơn. Nó cho phép thực hiện các tương tác với tất cả đối tượng trong mẫu tương tự nhau. Tần suất sử dụng: khá cao 2. Mục đích ra đời Composite Pattern được sử dụng khi chúng ta cần xử lý một nhóm đối...
Design Pattern Design Patterns Structural Design Pattern Structural Patterns Composite Pattern1. Giới thiệu Flyweight là một mẫu thiết kế thuộc nhóm Structural Pattern – những mẫu thiết kế giúp dễ dàng thiết kế bằng cách xác định một cách hiện thực hóa mối quan hệ giữa các thực thể. Mẫu thiết kế Flyweight là một mẫu thiết kế cấu trúc cho phép bạn lắp nhiều đối tượng hơn vào dung lượng RAM có sẵn bằng cách chia sẻ, phân phối các phần trạng thái chung - riêng giữa nhiều...
Design Pattern Design Patterns Structural Design Pattern Structural Patterns1. Giới thiệu State Pattern là một mẫu thiết kế thuộc nhóm Behavioral Pattern – những mẫu thiết kế xác định các mẫu giao tiếp chung giữa các object. Từ đó các mẫu này tăng tính linh hoạt trong việc thực hiện việc giao tiếp giữa các object. State Pattern là một mẫu thiết kế hành vi cho phép một object thay đổi hành vi của nó khi trạng thái bên trong của nó thay đổi. Nó là một trong những mẫu...
Design Pattern Design Patterns Behavioral Design Pattern Behavioral state design pattern1. Giới thiệu Phân loại: Behavior Pattern Bí danh: Policy Mục đích: Định nghĩa một tập hợp các thuật toán giống nhau, encapsulate chúng và khiến chúng có thể thay thế cho nhau. Strategy làm cho phần thuật toán độc lập khỏi client sử dụng nó. Tần suất sử dụng: khá cao 2. Mục đích ra đời Giả sử chúng ta cần xây dựng một app giúp tìm đường đi trong thành phố. Ban đầu app chỉ giúp những...
Design Pattern Behavioral Design Pattern Strategy Pattern Strategy Strategy Design Pattern1. Giới thiệu Proxy (hay còn gọi là Surrogate) là một mẫu thiết kế thuộc nhóm cấu trúc (Structural Pattern). Điều khiển gián tiếp việc truy xuất đối tượng thông qua một đối tượng được ủy nhiệm Cung cấp 1 class đại diện để quản lí sự truy xuất đến thành phần của 1 class khác Giải quyết vấn đề security, perfomance, validation,… Tần suất sử dụng: khá cao 2. Mục đích ra...
Design Pattern Design Patterns Structural Design Pattern Structural Patterns1. Giới thiệu Visitor là một mẫu thiết kế thuộc nhóm Behavior Pattern Visitor còn được biết đến như là Double dispatch Cho phép định nghĩa các operation trên một tập hợp các đối tượng không đồng nhất về kiểu mà không làm thay đổi định nghĩa về lớp của các đối tượng đó. Cho phép tách các thuật toán khỏi các đối tượng mà chúng hoạt động. Giúp phục hồi lại kiểu dữ liệu bị mất...
Design Pattern Design Patterns Behavioral Design Pattern Behavioral Visitor Pattern1. Giới thiệu Command (hay còn gọi là Action, Transaction) là một mẫu thiết kế thuộc nhóm hành vi (Behavioral Pattern). Command pattern là một pattern cho phép bạn chuyển đổi một request thành một object độc lập chứa tất cả thông tin về request. Việc chuyển đổi này cho phép bạn tham số hoá các methods với các yêu cầu khác nhau như log, queue (undo/redo), transtraction. Khái niệm Command Object giống như một...
Design Pattern command Behavioral Design Pattern Behavioral command pattern1. Giới thiệu Phân loại: Behavior Pattern Mục đích: Memento cho phép người lưu trữ và hồi phục các phiên bản cũ của 1 object mà không can thiệp vào nội dung của object đó. 2. Mục đích ra đời Problem Tưởng tượng bạn đang tạo 1 text editor. Bao gồm các chức năng như chỉnh sửa text, format text, thêm ảnh, v.v.. Để phát triển thêm app, bạn quyết định cho phép người dùng undo và redo bất kỳ thao tác...
Design Pattern Design Patterns Behavioral Design Pattern Behavioral Memento Pattern1. Giới thiệu Mediator Pattern là một trong những Pattern thuộc nhóm hành vi (Behavior Pattern). Mediator có nghĩa là người trung gian. Pattern này nói rằng “Định nghĩa một đối tượng gói gọn cách một tập hợp các đối tượng tương tác. Mediator thúc đẩy sự khớp nối lỏng lẻo (loose coupling) bằng cách ngăn không cho các đối tượng đề cập đến nhau một cách rõ ràng và nó cho phép bạn thay đổi sự...
Design Pattern Design Patterns Behavioral Design Pattern Behavioral Mediator1. Giới thiệu Iterator hay còn gọi là Cursor là một mẫu thiết kế thuộc nhóm hành vi (Behavioral Pattern). Iterator được thiết kế cho phép xử lý nhiều loại tập hợp khác nhau bằng cách truy cập những phần tử của tập hợp với cùng một phương pháp, cùng một cách thức định sẵn, mà không cần phải hiểu rõ về những chi tiết bên trong của những tập hợp này. Nói cách khác, một Iterator được...
Design Pattern Design Patterns Behavioral Design Pattern Iterator Pattern IteratorLập trình khai báo (declarative programming) là một kĩ thuật mang lại rất nhiều lợi ích: code ngắn gọn hơn, dễ thay đổi, dễ bảo trì và mở rộng. Java là một ngôn ngữ thuần túy OOP theo hướng lập trình mệnh lệnh (imperative programming), "trường phái" ngược lại của declarative. Nhưng kể từ Java 8 với lambda expression, Java đã có thể tham gia vào cuộc chơi này. Trong bài viết này, mình sẽ giới thiệu...
Java Design Pattern declarative programming Functional Programming java 8Bài viết này chúng ta sẽ tìm hiểu về Retry pattern trong chuỗi bài viết về resilience4j. Khi làm việc với các hệ thống phân tán, hãy luôn nhớ một điều rằng chúng ta có thể gặp phải các vấn đề về độ trễ mạng, dịch vụ từ xa không khả dụng hay đang chạy chậm,...những sự cố này có thể ảnh hưởng đến hiệu suất tổng thể của hệ thống. Nếu một hệ thống có khả năng phục hồi...
Design Pattern microservicesKhi làm việc với các hệ thống phân tán, hãy luôn nhớ một điều rằng chúng ta có thể gặp phải các vấn đề về độ trễ mạng, dịch vụ từ xa không khả dụng hay đang chạy chậm,...những sự cố này có thể ảnh hưởng đến hiệu suất tổng thể của hệ thống. Nếu một hệ thống có khả năng phục hồi sau những sự cố như vậy sẽ tránh được sự cố domino (sụp đổ xếp tầng liên tiếp,...
Spring Boot Design Pattern microservicesTrong một số trường hợp khi các request đến server, chúng ta có thể muốn đưa các request vào hàng đợi và xử lý chúng theo trình tự hoặc theo thứ tự có ưu tiên sau đó thông báo cho người dùng sau khi các tác vụ được hoàn thành. Để các hệ thống của chúng ta có thể được kết hợp một cách mềm dẻo linh hoạt và cung cấp trải nghiệm người dùng tốt hơn vì người dùng sẽ không bị lock lại...
Redis Spring Boot Design PatternTài khoản cũ của mình có chút vấn đề nên mình chuyển sang dùng tài khoản mới để viết bài. Mọi người có thể follow tài mới TheLight và các bài viết gốc tại thenewstack. Xin cảm ơn mọi người! Nội dung bên dưới sẽ được move sang một tài viết trên tài khoản mới: TheLight Phát triển một ứng dụng microservice có thể rất thú vị. Nhưng xử lý nghiệp vụ giao dịch phân tán (business...
Redis Java Spring Boot Design Pattern kafkaChào các bạn, hôm nay mình sẽ giới thiệu mọi người về Behavior Parameterization là gì và được implement trong java như thế nào thông qua ví dụ vô cùng đơn giản. Để dễ hiểu mình sẽ dùng cú pháp java 8 để thể hiện các ví dụ sau. 1. Đặt vấn đề (Problem). Trong một buổi phỏng vấn, nhà tuyển dụng cho đề bài sau: Bạn có một danh sách các số nguyên và họ muốn bạn in ra một danh sách mới mà...
Design Pattern java core java 8 lambda expression behavior parameterizationTrong bài trước, mình đã tổng hợp lại các design pattern cơ bản nhất. Bài này sẽ tiếp tục với các creational pattern. I. Creational Pattern 1. Chức năng Khởi tạo object Cung cấp 1 cơ chế đơn giản, chính quy và có thể kiểm soát được việc khởi tạo object Đảm bảo tính bao đóng về các chi tiết trong việc class nào được khởi tạo và các instances này được khởi tạo ra sao Khuyến khích sử dụng...
Design Pattern