4
我正在考慮創建沿着「一次性使用」的設計模式的一些課程,由以下特徵來定義:一次性使用對象:是或否?
- 實例都被用於執行一些任務。
- 實例只會執行一次任務。試圖撥打
execute
方法兩次會引發異常。 - 在調用
execute
方法之前,可以修改屬性。事後再打電話也會引發例外。
簡約的實現可能是這樣的:
public class Worker
{
private bool _executed = false;
private object _someProperty;
public object SomeProperty
{
get { return _someProperty; }
set
{
ThrowIfExecuted();
_someProperty = value;
}
}
public void Execute()
{
ThrowIfExecuted();
_executed = true;
// do work. . .
}
private void CheckNotExcecuted()
{
if(_executed) throw new InvalidOperationException();
}
}
問題:
- 是否有一個名字呢?
- 模式或反模式?
爲什麼不只有一個接受'timeout'作爲參數的函數呢?此外,您可能正在重新發明輪子:http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx – Matthew
該示例是極簡主義的;在現實世界中,我設想了一種用法,其中方法注入不太合適。 「超時」只是第一個想到的隨機屬性名稱。讓我去Lorem Ipsum多一點。 –