//------------------------------------------------------------------------------------- // ProxyPatternExample1.cs //------------------------------------------------------------------------------------- using UnityEngine; using System.Collections; //This real-world code demonstrates the Proxy pattern for a Math object represented by a MathProxy object. namespace ProxyPatternExample1 { public class ProxyPatternExample1 : MonoBehaviour { void Start() { // Create math proxy MathProxy proxy = new MathProxy(); // Do the math Debug.Log("4 + 2 = " + proxy.Add(4, 2)); Debug.Log("4 - 2 = " + proxy.Sub(4, 2)); Debug.Log("4 * 2 = " + proxy.Mul(4, 2)); Debug.Log("4 / 2 = " + proxy.Div(4, 2)); } } /// /// The 'Subject interface /// public interface IMath { double Add(double x, double y); double Sub(double x, double y); double Mul(double x, double y); double Div(double x, double y); } /// /// The 'RealSubject' class /// class Math : IMath { 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; } } /// /// The 'Proxy Object' class /// class MathProxy : IMath { private Math _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); } } }