llopx

能跟您分享知识,是我的荣幸

Facade Pattern

今天看见迅雷的面试题竟然考到这个模式,我就把这个模式好好的温习了一遍。

 

Facade(外观模式),这个模式他是从系统层次上来定义的,它封装了一些底部对象的实现,然后组合到这个Facade里,向外部提供一个可以调用的借口。它的好处一是简化了外部的调用,二是隐藏内部的实现,三是对底部对象进行控制,使得外部无法直接使用此对象的方法,必须通过Facade。

 

下面是一段代码:

 

首先,我建立一个程序集叫做FacadeBiz

namespace FacadeBiz
{
    internal class ClassA
    {
        internal static void ActionA()
        {
            Console.WriteLine("ActionA");
        }
    }

    Internal class ClassB
    {
        internal static void Action1()
        {
            Console.WriteLine("Action1");
        }
    }

    public class Facade
    {
        public static void FacadeAction()
        {
            ClassA.ActionA();
            ClassB.Action1();
        }
    }
}
 
然后在程序集FacadePattern里引用FacadeBiz
namespace FacadePattern
{
    class Program
    {
        static void Main(string[] args)
        {
           FacadeBiz.Facade.FacadeAction();
           //ActionA() is protective
           FacadeBiz.ClassA.ActionA();
        }
    } 
}

可以看见,facade类的方法可以实现调用,但是我们想直接访问ClassA的ActionA方法,就被制止。

posted on 2009-12-19 22:01  llopx  阅读(258)  评论(0编辑  收藏  举报

导航