1. 程式人生 > >C#-設計模式-模板方法

C#-設計模式-模板方法

使用 下一步 個人 div 子類 pre 表頭 path imp

1.定義

就是抽象類的運用,將相似類中不變的內容和方法放入到父類中,進行重用。

2.例子

2.1 代碼

public abstract class AbstractImportData
{
    public DataSet GetDsByExcel(string filePath)
    {
        return null;
    }

    public abstract bool UpdateDatabase();
}

public class SimpleImportData : AbstractImportData
{
    
public override bool UpdateDatabase() { // 簡單的更新一張表,只需要excel中的表頭和table中字段的對應關系即可 return true; } } public class SqlImportData : AbstractImportData { public override bool UpdateDatabase() { // 可能需要更新多張表,這時必須自己手寫sql更新邏輯 return true; } }

這裏的代碼,其實是一個excel導入的功能,但是因為有些excel導入只是更新一張表,有些是要關聯更新幾張表,邏輯肯定不一樣。

但是共同的部分是,都需要將excel文件中的內容轉換成database,然後在進行下一步的操作。

2.2 接口和抽象類

抽象類和接口的區別是,接口中的方法一個都不能實現,但是抽象類不一樣,抽象類內部可以存在實現過的方法,為子類提供重用。

因此抽象類的核心,還是要將子類的公共操作進行提取,否則個人感覺就沒有必要使用。

(當然,其實抽象類也有和接口一樣,可以為框架提供公共調用的功能,但是個人感覺代碼的重用才是抽象類有別於接口的地方。

學習到現在,如果是真正的面向對象思想,其實還是應該從語義上去區分接口和抽象類,這裏不再詳述,之後再寫隨筆和大家討論。)

3.特點:

優點:使用繼承的方式,可以達到代碼的重用,避免了重復代碼的產生。

缺點:其實繼承的方式耦合還是比較高的,因此有些人會建議使用聚合的方式來代替繼承,因為耦合會比較低

C#-設計模式-模板方法