Tôi vừa học được một chút về Thành phần trên thừa kế. Tôi đã tự hỏi nếu tôi nên áp dụng các khái niệm cho một cái gì đó tôi đã viết gần đây.Lớp cơ sở hoặc trợ giúp trừu tượng
Chúng tôi trước đây có hai lớp là gần như giống hệt nhau, ngoài một vài khác biệt nhỏ. Chúng chứa một số tính năng truy cập cơ sở dữ liệu cơ bản, nhưng hoạt động trên các kiểu đối tượng khác nhau (nhưng có liên quan). Vì vậy, trước đây chúng tôi đã có lớp được cấu trúc một cái gì đó như thế này:
class BallMillDBHandler{
public BallMillDBHandler(){ ... }
public void InsertTool(BallMill tool) { ... }
public BallMill QueryTool(string toolID) { ... }
public void UpdateTool(BallMill tool) { ... }
public void DeleteTool(string toolID) { ... }
}
class DiamondToolDBHandler{
public DiamondToolDBHandler(){ ... }
public void InsertTool(DiamondTool tool) { ... }
public DiamondTool QueryTool(string toolID) { ... }
public void UpdateTool(DiamondTool tool) { ... }
public void DeleteTool(string toolID) { ... }
}
tôi mất phần lớn các phương pháp gần trùng lặp và refactored chúng ra thành một lớp BaseToolDBHandler()
, và thừa hưởng nó từ hai người kia, cung cấp một vài phương pháp trừu tượng và các thuộc tính để xử lý các khác biệt trong việc truy cập các tham số cơ sở dữ liệu.
Có ý nghĩa khi đặt lớp trợ giúp BaseToolDBHandler
thay thế, được chứa bên trong trình truy cập cơ sở dữ liệu và cung cấp cho họ giao diện chung các thuộc tính/phương thức trừu tượng trước đây không? Hay tôi nên để nó như một trường hợp thừa kế?
Nghe có vẻ như là nơi hoàn hảo để thừa hưởng tôi nên tôi sẽ để nó theo cách đó. –
Neil Kennendy đúng. Nhưng nếu BaseClass của bạn chỉ cung cấp các phương thức trừu tượng và các thuộc tính và không bao giờ cung cấp bất kỳ chức năng được triển khai nào sử dụng một giao diện thay thế (e.G. 'IDBHandler'). –