具體狀態類思考
當乙個物件的內在狀態改變時,允許改變其行為,這個物件看起來像是改變了其類。
狀態模式主要解決當控制乙個物件狀態轉換的條件表示式過於複雜時的情況。把狀態的判斷邏輯轉移到表示不同狀態的一系列類當中。可以把複雜的判斷邏輯簡單化。
程式設計師每個小時(12,13,17,21,是否下班)描述不同的行為。
硬編碼,面向過程示例:
/// d ##class(pha.yx.design.program).primarystate()
classmethod writeprogram(hour, finish)
/// d ##class(pha.yx.design.program).primarystate()
classmethod primarystate(hour, finish)
class pha.yx.design.state.state extends %registeredobject
}
class pha.yx.design.state.work extends %registeredobject
property hour as %decimal;
method hourget() as %decimal [ serveronly = 1 ]
method hourset(arg as %decimal) as %status [ serveronly = 1 ]
property finish as %boolean [ initialexpression = 0, private ];
method finishget() as %boolean [ serveronly = 1 ]
method finishset(arg as %boolean) as %status [ serveronly = 1 ]
method setstate(state as state)
method writeprogram()
}
class pha.yx.design.state.forenoonstate extends state
}
class pha.yx.design.state.noonstate extends state
}
class pha.yx.design.state.afternoonstate extends state
}
class pha.yx.design.state.eveningstate extends %registeredobject
}
class pha.yx.design.state.sleepingstate extends state
}
class pha.yx.design.state.reststate extends state
}
/// d ##class(pha.yx.design.program).state()
classmethod state()
電視機開機時可以調頻道,調音量,開機關機。關機時調頻道,調音量,開機關機這些狀態為不能用。如何來實現。感興趣的同學實現後可以發我一起參考下。 第十二章 Cach 命令大全 HANG 命令
描述引數 示例注意 暫停執行指定的秒數。hang與halt命令具有相同的最小縮寫 h 掛起的區別在於它所需的掛起時間引數。注意掛起時減去 h的差別 hang pc hangarg h pc hangarg其中 hangarg是 hangtime,hang將執行例程掛起指定的時間段。如果有多個引數,則...
第十二章 檔案
文字檔案 文字檔案是一種由若干字元構成的檔案,可以用文字編輯器進行閱讀或編輯。以txt py html等為字尾的檔案都是文字檔案。2.二進位制檔案 二進位制檔案一般是指不能用文字編輯器閱讀或編輯的檔案。以 mp4 png等為字尾的檔案都是二進位制檔案,如果想要開啟或修改這些檔案,必須通過特定軟體進行...
第十二章 dp
動態規劃策略 將原始問題拆分為多個子問題,將子問題結果記錄,方便復用子問題的解 遞迴 記憶化 遞推 是動態規劃的一體兩面,本質都是一樣的 遞推減少了呼叫次數,空間上還能優化,一般選擇遞推方式 遞迴 記憶化 int memo maxn 將o 2 n o n intfibonacci int n 遞推 ...