Core Design Patterns(2) Proxy 代理模式

VS 2008

代理模式使得我们可以通过引入一个代理对象来控制另一对象的创建及访问。

1. 模式静态类图



2. 应用

    现在有一个用于应用程序写文本日志的组件,创建这个组件的一个实例的时候,需要告诉它当前应用程序的名称,组件根据不同的应用程序做不同的处理(如,不同的应用程序写文本日志到不同文件夹),现在,我建立了一个应用程序,使用这个组件来写文本日志,但是如果每次写文本日志都要告诉它应用程序名,那不是太麻烦了,所以引入一个代理类,来负责该组件的创建。



ITextLog

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DesignPattern.Proxy.BBL {
    
interface ITextLog {
        
void Write(string message);
    }

}


TextLog

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DesignPattern.Proxy.BBL {
    
class TextLog : ITextLog {

        
private string appName = string.Empty;

        
public TextLog(string appName) {
            
this.appName = appName;
        }



        
ITextLog Members
    }

}

TextLogProxy

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DesignPattern.Proxy.BBL {
    
class TextLogProxy : ITextLog {

        ITextLog textLog 
= null;

        
private ITextLog GetTextLog() {
            
if (textLog == null{
                textLog 
= new TextLog("BoroughGridService");
            }

            
return textLog;
        }


        
ITextLog Members
    }

}

Client

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DesignPattern.Proxy.BBL;

namespace DesignPattern.Proxy {
    
class Program {
        
static void Main(string[] args) {
            ITextLog textLog 
= new TextLogProxy();
            textLog.Write(
"this is a message");
        }

    }

}

posted on 2008-02-25 20:53  Tristan(GuoZhijian)  阅读(479)  评论(0编辑  收藏  举报