一、什么是代理模式
它是一个极简的设计模式,它本身没有提供业务,只是做一下代理。
二、代理模式的作用
扩展功能时对修改关闭,保证业务的“纯洁性”。
三、代理模式的使用场景
在不破坏封闭的前提下,去扩展功能,不过这个代理模式是静态的。
四、如何实现代理模式
原本是直接使用业务类并调用方法,如下图:
如果此时需要添加新的功能,如添加异常,添加日志,添加延迟,添加缓存等等。。哪么就需要修改原有的业务逻辑,这样整个方法都需要重新测试,这是不稳定的,现在进行改造:
此例就完成了添加异常和扩展新的功能。
主程序:
namespace Proxy
{
class Program
{
static void Main(string[] args)
{
{
IComputer computer = new Computer();
computer.Open();
computer.Close();
}
Console.WriteLine("****************************************");
{
IComputer computer = new ComputerProxy();
computer.Open();
computer.Close();
}
}
}
}
原始业务类,Computer.cs:
namespace Proxy
{
public class Computer : IComputer
{
public void Close()
{
Console.WriteLine("关机");
}
public void Open()
{
Console.WriteLine("开机");
}
}
}
代理类,ComputerProxy.cs:
namespace Proxy
{
public class ComputerProxy : IComputer
{
private Computer computer = new Computer();
public void Close()
{
try
{
Console.WriteLine("关闭所有应用程序");
this.computer.Close();
Console.WriteLine("拨掉所有电源线");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public void Open()
{
try
{
Console.WriteLine("插上所有电源线");
this.computer.Open();
Console.WriteLine("输入密码进入系统");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
以上为本章全部内容。
完。