Cách sử dụng rất đơn giản trong cả hai trường hợp, nhưng việc cho phép nhập tham số vào Parser1 có nghĩa là gì?
Đó là một sự thay đổi thiết kế cơ bản. Và thiết kế nên truyền đạt ý định và ý nghĩa. Bạn có cần phải có các đối tượng riêng biệt cho mỗi chuỗi bạn muốn phân tích không? Nói cách khác, tại sao chúng ta cần một phiên bản của trình phân tích cú pháp với chuỗiX và một phiên bản khác với chuỗiY? Điều gì về parse (ing) và chuỗi đã cho mà hai người phải sống và chết cùng nhau? Giả sử rằng việc thực hiện "phân tích cú pháp] cơ bản" (như Robert Harvey nói) không thay đổi, dường như không có điểm nào. Và thậm chí sau đó IMHO nghi vấn của nó.
Làm thế nào để khái niệm về một lớp thay đổi khi truyền dữ liệu đến hàm tạo thay vì các tham số của phương thức?
Các tham số của hàm tạo cho tôi biết những điều này là bắt buộc đối với một đối tượng. Nhà nước thích hợp không được đảm bảo mà không có họ. Ngoài ra, tôi biết làm thế nào / tại sao một trình phân tích cú pháp khác về cơ bản với một trình phân tích cú pháp khác.
Các tham số của hàm tạo giúp tôi không phải biết quá nhiều về cách sử dụng lớp. Nếu thay vào đó tôi phải thiết lập một số thuộc tính nhất định - làm sao tôi biết điều đó? Cả một lon giun mở ra. Tính chất gì? Theo thứ tự? Trước khi tôi dùng phương pháp gì? và như thế.
Một câu hỏi khác xuất hiện khi tôi nhận ra rằng một giao diện sẽ khá vô nghĩa trong lần thực hiện thứ hai:
Một giao diện, như trong API, là các phương thức và thuộc tính được hiển thị với mã máy khách. Đừng bao bọc trong public interface { ... }
độc quyền. Vì vậy, ý nghĩa của giao diện là trong một trong hai-hay constructor vs tham số phương pháp tiến thoái lưỡng nan, KHÔNG public interface Iparser
vspublic sealed class Parser
Các sealed
lớp học là số lẻ. Nếu tôi đang nghĩ về các triển khai trình phân tích cú pháp khác nhau - bạn đã đề cập đến "Iparser" - thì kế thừa là suy nghĩ đầu tiên của tôi. Nó chỉ là một phần mở rộng khái niệm tự nhiên trong suy nghĩ của tôi. IE tất cả các ParserX
s về cơ bản Parser
là s. Làm thế nào khác để nói điều đó? ... Một con chó chăn cừu Đức là một con chó (thừa kế), nhưng tôi có thể huấn luyện con vẹt của mình sủa (hành động như một con chó - "giao diện"); nhưng Polly không phải là một con chó, chỉ giả vờ, đã học được một tập hợp con chó. Các lớp, trừu tượng hoặc cách khác, phục vụ hoàn hảo như giao diện .