在电子商城新起的时代里,某宝某东的大型电商平台假货也是非常多而且价格还不菲或是在这些电商平台购不到的一些商品,从而衍生出一种专门从海外进行购物的一群人,我们称之为代购,一般来说,代购是从国内接到一些需求,从而到海外进行选购带回国内的一种中间商。
在软件开发过程种有一种设计模式可以提供类似代购的功能,由于一些原因客户端不想直接或者不能直接访问到一个对象,此时添加一个代理类,通过这个代理来间接访问这个对象,代理模式使用得非常广泛,而且变化也是非常之多,常见的有远程代理、虚拟代理、缓冲代理、保护代理等。
代理模式(Proxy Pattern):给某一个对象提供一个代理或者占位,并由代理对象来控制原对象访问
代理模式的结构
Subject(抽象角色):声明真实角色和代理角色的抽象方法,这样在使用真实角色的地方都可以用代理角色客户只需要针对抽象层编程。
public abstract class Subject
{
public abstract void Request();
}
Proxy(代理角色):包含对真实角色的引用,实现抽象角色方法,代理角色还可以对真实角色的控制和使用
public class Proxy : Subject
{
private RealSubject realSubject =new RealSubject();
//这里可以使用组合
//private RealSubject realSubject;
//public Proxy(RealSubject realSubject)
//{
// this.realSubject = realSubject;
//}
public void ProRequest()
{
Console.WriteLine("这是代理操作");
}
public override void Request()
{
realSubject.Request();
this.ProRequest();
}
}
RealSubject(真实角色):实现真实业务的操作,客户端可以调用代理类来操作和使用这个真实角色。
public class RealSubject : Subject
{
public override void Request()
{
Console.WriteLine("这是实现操作");
}
}
调用
Subject subject = new Proxy();
subject.Request();