各位好
class中有些與別的class有一樣的方法(功能一樣)
如果想有較好的做法該怎麼做
我的想法
1.寫一個共用class 把有重複的方法都放進去 然後每個class都繼承它
2.一樣寫個class 把有重複的方法都放進去, 然後每個class都new一個實例出來使用它
3.不用整理出來 之後若需修改再一一修改就好
不知我這幾個想法的實用性怎樣
想請問在職場上/團隊上一般會怎麼做比較好,謝謝
class classA{
method_A1(){...}
method_A2(){...}
method_AB(){...}//與classB有相同功能的方法
method_AD(){...}//與classD有相同功能的方法
}
class classB{
method_B1(){...}
method_B2(){...}
method_AB(){...}//與classA有相同功能的方法
method_BC(){...}//與classC有相同功能的方法
}
class classC{
method_C1(){...}
method_C2(){...}
method_BC(){...}//與classB有相同功能的方法
}
class classD{
method_D1(){...}
method_D2(){...}
method_AD(){...}//與classA有相同功能的方法
}
很不錯的想法,就初學者而言來說。
只是,這樣子也代表了你對物件的不熟悉。
正常來說,做出一樣的功能不同的物件名是沒有意義的事。
但考量多重覆性的可能性。
的確可以用一個主class。重覆性高的class就來去繼承。
會說你的想法不錯的原因,是因為本來就該這樣做。
但在規劃上的思考。則不是你所想的那樣簡單處理。
架構要先搞好。
但對你來說,你首先要先去了解何謂繼承。再來談這方面的事。
可以用方法和資料之間的關聯性,來決定怎麼切分類別、方法
變數屬性和方法彼此環環相扣,適合用物件類別封裝這些屬性和方法
不需要依賴其他變數,直接透過傳入任意參數便能得到結果
就適合用這個方式封裝共用的靜態方法
各個職業便可繼承「角色」的屬性和方法
這種無法直接透過父類別決定差異極大的叫聲動作
就適合透過抽象、介面實作
另外以HR系統為例,加班申請作業跟請假申請作業都是申請作業
但是審核的過程和資料條件完全不一樣
就適合用介面的方式實作各自的審核方法
這四種往下玩,就是設計模式
用多深取決於你的情境和架構