外观模式主要是用来简化统一个很大的接口或者一群复杂的接口。

外观模式定义:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统很容易使用.(深入浅出设计模式) 

 外观模式不只是简化了接口,也将客户从组件的子系统中解耦。

 外观模式实现代码:

//看电视类
    public class WatchTv
    {
        string channel;
        public WatchTv(string channel)
        {
            this.channel = channel;
        }

        public string TvOn()
        {
            return "Tv is on " + channel;
        }

        public string TvOff()
        {
            return "Tv is off " + channel;
        }

    }
    //可以添加更多的类来通过外观模式包装在这里只举一个例子
    //外观模式
    public class WatchTvFacade
    {
       WatchTv watchTv;
        //添加更多的对象
       public WatchTvFacade(WatchTv tv)
        {
            this.watchTv = tv;
        }
        
        public string StartWatchTv()
        {
            return watchTv.TvOn();
        }

        public string EndWatchTv()
        {
            return watchTv.TvOff();
        }
    }
    //外观模式的测试
    public class FacadeTest
    {
        public static void Main()
        {
            WatchTv watchTv = new WatchTv("First Channel");
            WatchTvFacade facade = new WatchTvFacade(watchTv);
            Console.WriteLine(facade.StartWatchTv());

            Console.WriteLine("the Tv is end");

            Console.WriteLine(facade.EndWatchTv());

        }
      
    }


外观模式与适配器模式以及装饰者之间的区别

1.外观和适配器都可以包装许多类,但是外观的目的是简化接口,而适配器的目的是将接口转换成不同接口 

2.当需要使用一个现有的类而其接口不符合你的需求时就是用适配器。

3.当需要简化并统一一个很大的接口或者一群复杂的接口时使用外观。

4.实现一个外观,需要将子系统组合进外观众,然后将工作委托给子系统执行。 

5.实现一个适配器可能需要一番功夫,也可能不费功夫,是目标接口大小与复杂度来定

6.你可以为一个子系统实现一个以上的外观。

7.适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以后增加新的行为和责任;而外观将一群“包装”起来以简化其接口 

posted on 2011-01-26 14:06  jackdesk  阅读(746)  评论(0编辑  收藏  举报