004代理模式

代理模式

代理模式需要代理和被代理类都实现同一个行为接口.
这样, 代理类就可以持有被代理类, 而不实现任何功能

可以用于做权限控制, 和懒加载等等.

UML

UML

实际代理和被代理的关系应该是关联

UMLClassCode

interface IProxy{
void Action1();
void Action2();
void Action3();
}
class Proxy{
+ IProxy person;
+ void Action1();
+ void Action2();
+ void Action3();
}
class Person{
+ void Action1();
+ void Action2();
+ void Action3();
}
IProxy <|.. Proxy
Person <--o Proxy
IProxy <|.. Person

Code

public static void Main()
{
    IProxy proxy = new Proxy(new Person());
    proxy.Action1();
    proxy.Action2();
    proxy.Action3();
    Console.Read();
}
interface IProxy
{
    void Action1();
    void Action2();
    void Action3();
}
class Proxy:IProxy
{
    public IProxy person;
    public Proxy(IProxy person)
    {
        this.person = person;
    }
    public void Action1()
    {
        person.Action1();
    }
    public void Action2()
    {
        person.Action2();
    }
    public void Action3()
    {
        person.Action3();
    }
}
class Person: IProxy
{
    public void Action1()
    {
        Console.WriteLine("Person Action1");
    }
    public void Action2()
    {
        Console.WriteLine("Person Action2");
    }
    public void Action3()
    {
        Console.WriteLine("Person Action3");
    }
}