2012-09-20 3 views
4

나는 다음과 같은 기능에 의해 정의 된 "단일 사용"디자인 패턴에 따라 몇 가지 클래스를 만드는 방법에 대해 생각하고 있어요 :일회용 개체 : yea 또는 nay?

  • 인스턴스는 어떤 작업을 수행하는 데 사용됩니다.
  • 인스턴스는 작업을 한 번만 실행합니다. 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. 패턴 또는 패턴 방지?
+2

'timeout'을 매개 변수로 받아들이는 함수가 하나 뿐인 이유는 무엇입니까? 또한 휠을 다시 만들 수도 있습니다. http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx – Matthew

+1

예제는 미니멀리스트입니다. 현실 세계에서 나는 메소드 삽입이 잘 맞지 않는 유스 케이스를 구상 중이다. 'timeout'은 임의의 속성 이름을 염두에 두는 첫 번째 일이었습니다. 좀 더 Lorem Ipsum에 가보겠습니다. –

답변

3

이것은 모양이 balking pattern 인 것처럼 보입니다.

특정 방법으로 개체가 논리적으로 보이면 문제가 발생하지 않습니다.

0

스트림은 다소 유사한 방식으로 작동하며 (대부분의 작업에서 Dispose/Close를 사용하여 잠금을 설정합니다). 그래서 그것은 정확히 놀랄만 한 패턴이 아닙니다.

관련 문제