Design patterns V : Facade Pattern

/*

Author: Jiangong SUN

*/


Facade Pattern (外觀模式) provides a unique interface to a set of methods of different subsystems in an application. It's widely used in application development.

It's a structural pattern.


Now let's see the implementation in CSharp.

Firstly, create subsystems and their methods.

        class SubSytemOne
        {
            public void MethodOne()
            {
                Console.WriteLine("SubSystemOne Method");
            }
        }
        class SubSytemTwo
        {
            public void MethodTwo()
            {
                Console.WriteLine("SubSystemTwo Method");
            }
        }
        class SubSytemThree
        {
            public void MethodThree()
            {
                Console.WriteLine("SubSystemThree Method");
            }
        }
        class SubSytemFour
        {
            public void MethodFour()
            {
                Console.WriteLine("SubSystemThree Method");
            }
        }

Create Facade class and its methods as an interface to subsystems' methods' aggregation.

        class Facade
        {
            private readonly SubSytemOne _one;
            private readonly SubSytemTwo _two;
            private readonly SubSytemThree _three;
            private readonly SubSytemFour _four;
            public Facade()
            {
                _one = new SubSytemOne();
                _two = new SubSytemTwo();
                _three = new SubSytemThree();
                _four = new SubSytemFour();
            }
            public void MethodA()
            {
                Console.WriteLine("MethodA():");
                _one.MethodOne();
                _three.MethodThree();
            }
            public void MethodB()
            {
                Console.WriteLine("MethodB():");
                _two.MethodTwo();
                _four.MethodFour();
            }
            public void MethodC()
            {
                Console.WriteLine("MethodC():");
                _one.MethodOne();
                _two.MethodTwo();
                _four.MethodFour();
            }
        }

The clients can call facade's methods to satisfy its requirements.

                var facade = new Facade();
                facade.MethodA();
                facade.MethodB();
                facade.MethodC();

So this is the implementation of facade pattern. I hope you enjoy this article. Enjoy coding!



references:

http://www.dofactory.com/Patterns/PatternFacade.aspx#_self1

http://zh.wikipedia.org/wiki/%E5%A4%96%E8%A7%80%E6%A8%A1%E5%BC%8F

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章