2016-06-03 2 views
0

나는 프로토 타입 패턴에 관한 질문이 있습니다. 이해 프로토 타입 패턴

난 원형 패턴을 복사 대상이 아니라 비용이 많이 드는 작업으로 간주되는 새로운 하나를 생성 효과적이라고 읽는다.

이 그래서를 기반으로 내가 샘플을 시도하고 나는 다양한 결과를 참조하십시오. 올바른 방법으로 확인하고 있습니까? 아니면 놓친 것이 있습니까?

static void Main(string[] args) 
    { 
     var sw = new Stopwatch(); 
     sw.Start(); 
     Employee e; 
     for (var i = 0; i < 100000; i++) 
     { 
      e = new Employee(5, "sandesh", 27, "Bengaluru"); 
      e.Print(); 
     } 
     sw.Stop(); 
     Console.WriteLine("New : " + sw.ElapsedMilliseconds); 

     sw.Reset(); 
     sw.Start(); 
     e = new Employee(5, "sandesh", 27, "Bengaluru"); 
     for (var i = 0; i < 100000; i++) 
     { 
      var en = e.Clone(); 
      en.Print(); 
     } 
     sw.Stop(); 
     Console.WriteLine("Clone : " + sw.ElapsedMilliseconds); 

     Console.ReadLine(); 
    } 


public class Employee 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public int Age { get; set; } 
    public string Place { get; set; } 

    public Employee(int id, string name, int age, string place) 
    { 
     Id = id; 
     Name = name; 
     Age = age; 
     Place = place; 
    } 


    public Employee Clone() 
    { 
     return (Employee)this.MemberwiseClone(); 
    } 

    public void Print() 
    { 
     var sum = Id * Age; 
     var full = sum + Name + Place; 
    } 
} 

그리고 그 결과는 다음과 같습니다 : 1 차 경기 - 새로운 기능 : 18 복제 : 26

2 차 경기 - 새로운 기능 : 34 복제 : 30

3 실행 : - 신규 : 20 클론 : 33

이 패턴을 이해하는 데 도움을 주시면 감사하겠습니다. 또한 여분의 것, 그것은 복제하지 일어난다 않는 새로운 객체를 생성하는 데 걸리는 무엇입니까?

+0

당신은 "효과"와 "효율"의 차이를 알아? 읽은 기사가 의미하는 바를 "효과적인"것으로 파악하십시오. "내가 읽었습니다"라고 말할 때마다 읽은 곳을 말해주십시오. 그렇다면 누군가가 당신이 오해했는지 여부를 확인할 수 있습니다. 또는 기사가 우둔한 블로거에 의해 작성되었는지 또는 신뢰할 수있는 출처에서 왔는지 여부를 확인할 수 있습니다. – gnasher729

+0

일반적으로 프로토 타입 패턴은 객체를 생성하지 않으므로 더 잘 작동한다고 생각합니다. 제 예제에서는 그렇지 않습니다. 나는 올바른 길을 가고 있는가? 아니면 당신이 제안 할 수있는 것이 있습니까? 또한 장점을 볼 수있는 샘플 코드도 도움이 될 것입니다. 많은 기사를 읽었으며 특히 해당 기사를 찾을 수 있는지 확실하지 않습니다. 그러나 아직도 나는 대답 할 수있는 질문을 느낀다 : –

답변

3

당신이 객체를 복제 대 객체의 생성을 측정하는 데 사용할 수있는 메트릭을 찾고있는 것으로 보인다. 샘플에서는 차이 메커니즘을 통해 개체를 만들고 메트릭의 차이를 찾고 있습니다.

프로토 타입 패턴이 의도하는 것은 컴파일러와 바이트 코드의 메커니즘이 아닌 객체 생성 시간을 줄이는 것이고 은 보통 실행될 시간이 많이 걸리는 작업 인을 피하는 것입니다.

예를 들어 Employee 개체에서 데이터베이스 호출을 올바르게 인스턴스화해야하는 경우 Prototype 패턴을 사용하여 해당 호출을 피할 수 있습니다. 코드가 보여 주듯이 여전히 개체 및 설정 값을 만들 수 있지만 개체의 논리적 초기화 (실제 데이터)는 단락 될 수 있습니다. 시간 절약이 들어오는 곳이다.

+0

아! 실시간 객체와 같이 가장 중요한 부분을 이해하지 못했습니다. 그것을 지적 주셔서 감사합니다. –