Câu hỏi phỏng vấn về mô hình MVC

Mọi người cho em một số câu hỏi phỏng vấn về mô hình MVC trong java với ạ!
Hôm bữa em đi phỏng vấn ở TMA có anh đó hỏi em tại sao ở tầng Service phải gọi tới DAO, rồi qua bên Controller mới gọi tới Service, sao ko gọi thẳng tầng DAO. Câu hỏi thứ 2 là phép toán 1+1 viết ở tầng nào em trả lời là viết ở tầng Controller phát em thấy sắc mặt ảnh ko ổn lắm. Vậy là em biết mình đứt luôn :sweat_smile: :sweat_smile: :sweat_smile: :sweat_smile:

Em có một thắc mắc nữa là em đang học spring MVC, em thấy người ta thường tạo 1 interface Dao và 1 class DaoImpl để kế thừa từ interface đó. em ko hiểu là tại sao mình phải làm như vậy ạ ?

  1. Controller là để phân phối, kiểm tra yêu cầu và giao tiếp với user thôi, tính toán xử lý nằm ở Service.

  2. Tuỳ theo yêu cầu thiết kế và thói quen của dev. Thường thì toàn bộ ứng dụng chỉ cần 1 instance DAO với mỗi database thôi, nếu thiết kế như thế thì 1 interface để biết DAO cần làm gì, mỗi class DAO kết nối đến một loại database khác nhau. Mỗi class DAO đều implement interface kia. Class DAOImpl là class private để coder không tạo thêm được instance mới tuỳ tiện.

2 Likes

Em tìm hiểu về Dependency Injection trong java sẽ hiểu tại sao người ta lại phải tách ra interface và class Impl vậy. Làm như vậy để tránh sự phụ thuộc cứng của các class, sau này khi em muốn thêm một nhiệm vụ mới thì em chỉ cần thêm một class Impl khác và khai báo trong interface Dao, rồi gọi ở controller, em sẽ thấy là controller không cần biết thằng interface kia có bao nhiêu class impl, nó cần thằng nào thì nó gọi. Trong các ứng dụng lớn thì người ta phải làm như vậy để code minh bạch hơn, dễ test và mở rộng hơn.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?