5

我正在考虑按照“一次性”设计模式创建一些类,由以下特性定义:

  • 实例用于执行某些任务。
  • 一个实例只会执行一次任务。尝试调用该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();
    }
}

问题:

  1. 有这个名字吗?
  2. 模式还是反模式?
4

2 回答 2

3

这看起来像是一种阻碍模式

如果您的特定对象以这种方式运行似乎是合乎逻辑的,我认为它没有问题。

于 2012-09-20T20:29:04.063 回答
0

流的行为方式有些相似(它们也使用 Dispose/Close 来锁定它们以进行大多数操作)。所以这并不完全是令人惊讶的模式。

于 2012-09-20T19:56:28.650 回答