Patterns in SOME –Proxy

Code in C#:
 
namespace Proxy_DesignPattern
{
     using System;
     using System.Threading;
 
     ///<summary>
     ///    Summary description for Client.
     ///</summary>
     abstract class CommonSubject
     {
         abstract public void Request();     
     }
 
     class ActualSubject : CommonSubject
     {
         public ActualSubject()
         {
              // Assume constructor here does some operation that takes quite a
              // while - hence the need for a proxy - to delay incurring this
              // delay until (and if) the actual subject is needed
              Console.WriteLine("Starting to construct ActualSubject");       
              Thread.Sleep(1000); // represents lots of processing!
              Console.WriteLine("Finished constructing ActualSubject");
         }
             
         override public void Request()
         {
              Console.WriteLine("Executing request in ActualSubject");
         }
     }
 
     class Proxy : CommonSubject
     {
         ActualSubject actualSubject;
 
         override public void Request()
         {
              if (actualSubject == null)
                   actualSubject = new ActualSubject();
              actualSubject.Request();
         }   
        
     }
    
     public class Client
     {
         public static int Main(string[] args)
         {
              Proxy p = new Proxy();
 
              // Perform actions here
              // . . .
 
              if (1==1)     // at some later point, based on a condition,
                   p.Request();// we determine if we need to use subject
                                  
              return 0;
         }
     }
}
 
Code in SOME:
  
ACommonSubject
       a_Request()
 
CActualSubject :ACommonSubject
       ()
       o_Request()
 
CProxy : ACommonSubject,->CActualSubject[_actualSubject]
       o_Request()
 
CClient
       main
      
CClient.main
{
       CProxy p.();
       p.Request()
       {
              <%if (_actualSubject == null) %>
              <%{ %>
                     _actualSubject.()
                     {
                            <%
                            Console.WriteLine("Starting to construct ActualSubject");         
                            Thread.Sleep(1000); // represents lots of processing!
                            Console.WriteLine("Finished constructing ActualSubject");
                            %>
                     };
              <%}%>
              _actualSubject.Request()
              {
                     <% Console.WriteLine("Executing request in ActualSubject"); %>
              };
       };
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值