본문 바로가기
C# 디자인패턴

14# Proxy패턴 Structural Patterns

by NaHyungMin 2019. 6. 19.

 

static void Main(string[] args)

{

    //BuilderExample();

    //FactoryExample();

    //FactoryMethodExample();

    //FactoryMethodExample2();

    //ProtoTypeExample();

    //SingletonExample();

    //AdapterExample();

    //BridgeExample();

    //CompositeExample();

    //DecoratorExample();

    //FacadeExample();

    //FlyweightExample();

 

    ProxyExample();

 

    //Console.WriteLine("Hello World!");

    Console.ReadKey();

}

 

static void ProxyExample()

{

    MathProxy proxy = new MathProxy();

 

    Console.WriteLine("4 + 2 = {0}", proxy.Add(42));

    Console.WriteLine("4 - 2 = {0}", proxy.Sub(42));

    Console.WriteLine("4 * 2 = {0}", proxy.Mul(42));

    Console.WriteLine("4 / 2 = {0}", proxy.Div(42));

}

 

main.cs

 

namespace DesignPatterns.Structural_Patterns.Proxy

{

    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);

    }

}

 

IMath.cs

 

namespace DesignPatterns.Structural_Patterns.Proxy

{

    public class Math : IMath

    {

        public double Add(double x, double y)

        {

            return x + y;

        }

 

        public double Div(double x, double y)

        {

            return x - y;

        }

 

        public double Mul(double x, double y)

        {

            return x * y;

        }

 

        public double Sub(double x, double y)

        {

            return x / y;

        }

    }

}

 

Math.cs

 

namespace DesignPatterns.Structural_Patterns.Proxy

{

    public class MathProxy : IMath

    {

        private Math math = new Math();

 

        public double Add(double x, double y)

        {

            return math.Add(x, y);

        }

 

        public double Div(double x, double y)

        {

            return math.Sub(x, y);

        }

 

        public double Mul(double x, double y)

        {

            return math.Mul(x, y);

        }

 

        public double Sub(double x, double y)

        {

            return math.Sub(x, y);

        }

    }

}

 

MathProxy.cs

 

참고 사이트

https://www.dofactory.com/net/proxy-design-pattern