Trong ứng dụng của tôi, tôi có một Controller
được bắt đầu bằng phương pháp chính. Bộ điều khiển khởi tạo móc, kết nối cơ sở dữ liệu, giao diện người dùng, kết nối khác và các thứ khác. Nó nắm giữ hầu hết trạng thái của chương trình (không, nó không phải là Singleton). Trong một ví dụ khác có một bộ điều khiển cho bot xử lý việc giải thích và gửi ra khỏi các lệnh. Cả hai đều là các tệp khá lớn.Làm thế nào tôi có thể viết một Controller mà không biến nó thành một đối tượng của Chúa?
Tôi đã đọc lên các đối tượng của Thiên Chúa, nhưng tôi thực sự không biết cách nào để tách nó ra. Nếu tôi chia nhỏ thông dịch viên và điều phối viên trong bot, nó sẽ tạo ra một chuỗi cuộc gọi khủng khiếp (giống như getBot().getParser().getOutput().sendMessage(recipient, message)
). Tương tự như vậy trong Controller đầu tiên nếu tôi chia nhỏ mọi thứ, bạn sẽ chỉ có các đối tượng Data chứa các trường và một số phương thức tiện ích bí danh. Tách chúng lên sẽ làm mọi việc tồi tệ hơn. Và trước khi bạn cho rằng nó không thể duy trì, nó thực sự là không. Tôi thậm chí không viết bộ điều khiển Bot nhưng tôi vẫn biết những gì đang xảy ra.
Vấn đề là lớp Bot dài 2000 dòng (có thể ngắn hơn nếu tôi lấy ra các chú thích Javadoc) và Bot dài khoảng 1000 dòng. Rất nhiều dòng = Thiên Chúa đối tượng. Nhưng liệu có ổn cho một hoặc hai lớp cốt lõi của một dự án?
Liên quan: [Thiết kế một lớp theo cách sao cho nó không trở thành "đối tượng Thiên Chúa"] (http://stackoverflow.com/questions/2589703/designing-a-class-in-such-a- cách-mà-nó-không-trở thành-một-thần-đối tượng) –
@ jleedev Tôi đã nhìn vào đó, nhưng đây là một chút của một vấn đề khác nhau. OP có thể làm các đối tượng phụ làm công việc tốt vì nó là tất cả nội bộ. Tuy nhiên, trường hợp của tôi là một bộ điều khiển API phải đối mặt công khai cần phải đơn giản, nơi tôi không thể làm cho bất kỳ đối tượng nào khác thực hiện công việc. – TheLQ