( Design Patterns ) Structural D

2016-10-01  本文已影响0人  乔什华

Definition

Provide a surrogate or placeholder for another object to control access to it. This pattern can be used when we don't want to access the resource or subject directly.

Components

Proxy Pattern UML

Code

public interface ISubject
{
    double Add(double x, double y);
    double Sub(double x, double y);
    double Mul(double x, double y);
    double Div(double x, double y);
}

public class Math : ISubject
{
    public double Add(double x, double y) { return x + y; }
    public double Sub(double x, double y) { return x - y; }
    public double Mul(double x, double y) { return x * y; }
    public double Div(double x, double y) { return x / y; }
}

public class MathProxy : ISubject
{
    private Math _math;

    public MathProxy()
    {
        _math = new Math();
    }

    public double Add(double x, double y)
    {
        return _math.Add(x, y);
    }
    public double Sub(double x, double y)
    {
        return _math.Sub(x, y);
    }
    public double Mul(double x, double y)
    {
        return _math.Mul(x, y);
    }
    public double Div(double x, double y)
    {
        return _math.Div(x, y);
    }
}

public class ProxyPatternRunner : IPatterRunner
{
    public void RunPattern()
    {
        var proxy = new MathProxy();

        Console.WriteLine("4 + 2 = " + proxy.Add(4, 2));
        Console.WriteLine("4 - 2 = " + proxy.Sub(4, 2));
        Console.WriteLine("4 * 2 = " + proxy.Mul(4, 2));
        Console.WriteLine("4 / 2 = " + proxy.Div(4, 2));

        Console.ReadKey();
    }
}

Proxy Types

Reference

Understanding and Implementing Proxy Pattern in C# - CodeProject

Design Patterns 2 of 3 - Structural Design Patterns - CodeProject

Head First Design Patterns - O'Reilly Media

上一篇 下一篇

猜你喜欢

热点阅读