Bài đăng

Đang hiển thị bài đăng từ Tháng 4, 2026

[Design pattern] Builder Pattern và biến thể

Vấn đề: Giả sử là có một object được tạo ra với nhiều bước phức tạp. Ví dụ như xây nhà phải xây cửa sổ, xây móng, xây cửa chính, .... Ý tưởng:  1. Tạo ra một Class HouseBuilder 2. Định nghĩa các method build_window, build_door và quan trọng nhất là hàm build 3. Mỗi method build_window sẽ return self. Code: class House:     def __init__(self):         # Khai báo sẵn các thuộc tính để dễ quản lý         self.window = None         self.door = None              def __str__(self):         # Thêm hàm này để in ra kết quả cho trực quan         return f"House with Window: {self.window}, Door: {self.door}" class HouseBuilder:     def __init__(self):         # Builder tự khởi tạo đối tượng thay vì nhận từ bên ngoài         self.house = House()               def...

88. Merge Sorted Array

Đề bài cho hai mảng nums1 và nums2 có chiều dài là m và n. Yêu cầu merge hai mảng này mà không sử dụng thêm mảng mới. VD: nums1 = [4, 5, 6, 0, 0, 0]; nums2 = [1, 2, 3] Ý tưởng: Thay vì cố gắng duyệt từ đầu thì sẽ duyệt từ đuôi. Duyệt từ đít của hai mảng nums1 và nums2. Thằng đít nào lớn hơn thì nhét vào cuối của nums1, rồi trừ index đi. class Solution : def merge ( self , nums1 : List[ int ], m : int , nums2 : List[ int ], n : int ) -> None : """ Do not return anything, modify nums1 in-place instead. """ if m == 0 : nums1[:] = nums2 if n == 0 : return i, j, k = m- 1 , n- 1 , m+n- 1 while j >= 0 : if (i >= 0 ) and (nums1[i] > nums2[j]): nums1[k] = nums1[i] i-= 1 else : nums1[k] = nums2[j] j-= 1 k-= 1

[Design Python] Chapter 01

Để làm được việc thiết kế model không phụ thuộc vào công nghệ thì có vài từ khóa sau:      1. Repository pattern : Cho phép làm việc với dữ liệu mà không quan tâm đến CSDL.     2. Service Layer pattern : Định nghĩa use cases.     3. Unit of Work pattern : Đảm bảo rằng một thao tác chỉ thành công nếu các thao tác con thành công.     4. Aggregate pattern : Đảm bảo toàn vẹn dữ liệu (A chứa B, thì chỉ thông qua A mới được thay đổi B). Một vài từ khóa cho modeling domains: Entity , Value Object và Domain Service . Ví dụ sẽ sử dụng xuyên suốt bài học:  Cách thông thường: Nếu nhà kho hết một mặt hàng nào đó, thì sẽ hiển thị mặt hàng đó là "out of stocks" cho người dùng. Cách mới: Khi mà hết hàng thì phải nhập hàng. Khi đó ta coi chỗ hàng nhập sẽ là hàng trong kho nếu mà biết ngày chúng được giao đến nhà kho và có thể coi là thời gian ship đơn hàng lâu hơn. Khi đó doanh nghiệp sẽ kiếm được nhiều tiền hơn cách thông thường. Mô hình hóa: 1. Sản p...