我的業務場景如下:類設計 - 界面還是抽象類?
我們可以使用多種支付系統(PS1,PS2,PS3 ...)進行支付。常用功能是 - ProcessPayment。該付款基於數據庫中的數據。
我可以使用什麼設計?
1)使用ProcessPayment方法和PaymentSystemBase基類創建IPaymentSystem接口,該類可與數據庫內容(如連接,檢索數據等)一起工作。創建實現IPaymentSystem接口的特定類PS1,PS2,PS3 ...,並從PaymentSystemBase基類派生以使用常見的數據庫內容。
2)創建包含所有ProcessPayment方法和數據庫內容的抽象基類。
3)別的東西。
interface IPaymentSystem
{
void ProcessPayment();
}
public class PaymentSystemBase
{
public PaymentSystemBase()
{
CheckInputParameters();
CreateDatabaseConnection();
}
protected void CheckInputParameters() {}
protected void CreateDatabaseConnection() {}
}
public class PS1 : PaymentSystemBase, IPaymentSystem
{
public void ProcessPayment()
{
Console.WriteLine("Process PS1...");
}
}
public class PS2 : PaymentSystemBase, IPaymentSystem
{
public void ProcessPayment()
{
Console.WriteLine("Process PS2...");
}
}
是的,這裏只有1方法。但是,數據庫的東西呢?我應該按照我的計劃爲其保留單獨的PaymentSystemBase基類嗎? – tesicg
當你遵循單一職責原則時,DataBase相關的東西應該以不同的方式處理(可能在Class中)。 ProcessPayment將進入界面。 – Dnyanesh