Theo mình hiểu thì trong ví dụ trên về Vehicle, Car, MotorBike, và Bicycle, nếu Vehicle (abtract class) mà thiết kế hàm ReFill(virtual) cho các lớp kế thừa (Car, MotorBike, và Bicycle) thì sẽ vi phạm nguyên tắc Likov Substitution Pricicple trong SOLID. Nguyên tắc này nói về việc class con phải thay thế được class cha mà không làm chương trình lỗi. Rõ ràng Car có thể dùng ReFill, MotorBike có thể dùng ReFill, nhưng khi Bicycle gọi tới ReFill thì sẽ throw exception làm chương trình lỗi. Cách giải quyết của bạn là chính xác khi tạo ra các lớp kế thừa cho từng loại phương tiện có dùng xăng và không dùng xăng. Như vậy, khi ta hoán đổi class trong các nhánh Bicycle - NonFossilFuelVehicle - Vehicle Hoặc Car|MotorBike - FossilFuelVehicle - Vehicle là đều được. Cái này nó khá giống với việc cùng là chim nhưng không phải con nào cũng biết bay (chim cánh cụt), nên nếu ép chim cánh cụt phải bay thì chắc chắn lỗi. Nguyên tắc Likov Substitution Pricicple nó giống như việc mình cần phải lường trước và thiết kế kỹ hơn một số khả năng có thể xảy ra để thiết kế và kế thừa một cách hợp lý.
@hamhochoi242 ай бұрын
Em cũng bị hỏi và làm bài test về thuật toán về gộp mảng giống như ví dụ của anh. em không sài cách như của anh(vì đầu em không nhảy số kịp), em sài gộp mảng bằng 2 con trỏ (em bị hỏi áp dụng cho gộp mảng lớn). em tính cách này tối ưu nhất vì kết quả cuối cùng là kết quả sau khi gộp và không còn bộ nhớ tạm. em xin chân intern🙂 và bị tạch vì họ bảo em nghĩ chậm. em mất 30p nghĩ và code xong ý tưởng.🙂
@atNguyen-vk2nu8 ай бұрын
ủng hộ bạn
@PhuocNguyen-cu1lz8 ай бұрын
E thấy ví dụ cuối nên tạo 2 interface IRefill và IRun thì hợp lý hơn. Vì e nhớ đây là case I trong SOLID - Interface Segregation Principle.
@Sieupham3018 ай бұрын
Hợp lý em. Anh không nhớ rõ ví dụ nhưng bài toán là muốn tạo abstract để define function luôn chứ không implement ở class con.
@ducpham358 ай бұрын
rất ngưỡng mộ kiến thức của anh, mặc dù chưa được học các khoá học của anh
@Sieupham3018 ай бұрын
Thanks em :D
@vrains243 ай бұрын
cái đoạn Vehice anh nói là đang áp dụng Abstract Factory Pattern phải không ạ?
@HoaiNam10TH8 ай бұрын
EM thấy khi làm microservice thì ngta hay sử dụng docker. vậy anh có thể ra video cách scale microservice?
@Sieupham3018 ай бұрын
Khi làm về microservice triển khai nhiều ngôn ngữ, mà mỗi ngôn ngữ lại mạnh với một loại công nghệ khác nhau nên mục đích dùng docker là để dễ install các công nghệ đó lên vì không đủ cơ sở hạ tầng để setup.
@ngocquyhuynhtran18498 ай бұрын
phút 21:45 hnhu bạn nhầm thì phải, else của case trên phải là A[i] > B[j]
@Sieupham3018 ай бұрын
Đúng rồi. Chỗ đó bị nhầm. Vào code thật chắc phải debug mới rõ hơn thì chắc cũng sửa một chút nữa mới chạy được
@nghiabasil8 ай бұрын
theo nodejs thì có mình có thể làm microservice được ko anh nhỉ
@Sieupham3018 ай бұрын
Microservice là kiến trúc giống như bản thiết kế ngôi nhà, còn mình xây bằng gì cũng được em nạ