類層次設計時的靈活處理

2021-10-08 23:10:12 字數 1154 閱讀 9662

多型設計時候的一些小技巧,通過加入一層抽象類,減少後續的改動,如在抽象基類或者介面中加入新的method,此時並不需要在所有的實現類中去實現,只需要在需要實現的類中去實現處理,在抽象類中提供預設的實現,當然出現此種情況介面可能設計的時候存在一定的不合理,但是在實際的情況確實會出現不合理。

public inte***ce ifile

public abstract class abstractfile : ifile

public class imagefile : abstractfile

private bool doopenimagefile()

}

public class docfile : abstractfile

private bool doopendocfile()

}

此時如果需要在ifile中加入新的method:bool textfilebackup ();如果沒有加入abstractfile 層,則需要在所有的實現類中去實現該方法,而實際就docfile 或者後面新加入的文字處理相關的file類需要實際處理該方法,

imagefile

就直接返回

。當然這裡可以通過改進設計,將textfilebackup方法從ifile中移走,但是實際情況有可能其他地方就是依賴ifile來呼叫textfilebackup方法,這就造成改動會影響較大。

通過在abstractfile中實現虛方法來加入乙個預設的實現,在子類中就可以選擇性的實現textfilebackup了。

public abstract class abstractfile : ifile

}

只在docfile中覆寫

public class docfile : abstractfile

private bool doopendocfile()

public override bool textfilebackup()

private bool dotextfilebackup()

}

可能存在不合理,但是在設計時候加入抽象類層次,可以增加一定的靈活性。

html設計時 img與元素存在間距的處理

在學習開發筆書奇 時,遇到一下問題 問題點 在初始化css中設定了img的padding和margin為0,可是在插入img後,img與父元素仍然有一定間距。原因分析 文字等inline元素預設與父級元素的baseline對齊,而baseline與父級元素底部是有一定距離的 這個與font size...

PHP設計超級好用的檔案上傳處理類一 (37)

class fileupload this setoption key,val private function geterror 時出錯 switch this errornum 個位元組 break case 3 str 上傳失敗 break case 4 str 建立存放上傳檔案目錄失敗,請重...

資料集按類劃分 用特別設計的損失處理非均衡資料

本文是對 cvpr 2019 class balanced loss based on effective number of samples 的一篇點評,全文如下 這篇 針對最常用的損耗 softmax 交叉熵 focal loss 等 提出了一種按類重新加權的方案,以快速提高精度,特別是在處理類...