我在我的程序中有一個名爲Page的類。它有10個屬性,但在某些時候,只需要3個屬性(RawPage),而在其他點上,需要全部或幾乎所有的屬性(ProcessedPage)。什麼更好:單個類的某些屬性未填充或多個類的屬性已填充?
更好我只有一個類具有所有屬性或將這些類拆分爲兩個類,每個類都需要一個類?
編輯:處理的屬性是Page中的新屬性,不會覆蓋任何屬性。
我在我的程序中有一個名爲Page的類。它有10個屬性,但在某些時候,只需要3個屬性(RawPage),而在其他點上,需要全部或幾乎所有的屬性(ProcessedPage)。什麼更好:單個類的某些屬性未填充或多個類的屬性已填充?
更好我只有一個類具有所有屬性或將這些類拆分爲兩個類,每個類都需要一個類?
編輯:處理的屬性是Page中的新屬性,不會覆蓋任何屬性。
我懷疑有人會建議使用此繼承,但我不會......這聽起來像你邏輯創建一個「加工頁的」從「原始頁面」(經處理) - 那麼爲什麼不模型,可以完全像那樣?
class ProcessedPage
{
private final RawPage source;
// Other stuff - the results of the processing
}
class RawPage
{
// The data you need here
public ProcessedPage process(...)
}
當一個類是信息僅供有時有效/所需/相關,它最終被相當棘手的工作,特別是隨着系統的發展規模。有了更明確的模型,你可以做潛在結束了一些重複,但你的班最終有一個更好的明確的生活目的,而不是患多種人格障礙。
注意,我沒有發ProcessedPage
的RawPage
一個子類 - 因爲我不想像你通常要治療ProcessedPage
爲一個RawPage
,潛在的再處理它。你可以可能希望有一個它們都實現的通用接口,當然這不包括process
方法,但這有些不同。
答案是否依賴。如果屬性不相關,可以進行分類,那麼將當前類分成兩個是有意義的。
但是,如果屬性具有泛化 - 特化關係,那麼你可以有一個類爲基礎,把屬性的其餘部分成不同的班組長這是第一類
的擴展詞shash
是他們完全相同的屬性?有時您可能在邏輯數據範圍中具有相同名稱但不同上下文含義的屬性。你的情況是這樣嗎?如果沒有,那麼我會說去一個類,除非有你想要封裝不同的行爲與您的ProcessedPage不同的RawPage相關聯。