C#-設計模式-模板方法
阿新 • • 發佈:2019-03-13
使用 下一步 個人 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#-設計模式-模板方法