【原创】设计模式面对面之外观模式

外观模式

类图:

常用的实现方式:

外观部件

public class FacadePartA {

        public FacadePartA(){

        }

        public string Write(){

            return "今天天气真不好!";
        }

    }//end FacadePartA
View Code
    public class FacadePartB {

        public FacadePartB(){

        }

        /// 
        /// <param name="message"></param>
        public void Read(string message){
            Console.WriteLine(message);
        }

    }//end FacadePartB
View Code

外观

public class Facade {

        private readonly FacadePartA _facadePartA;
        private readonly FacadePartB _facadePartB;

        public Facade(){
            _facadePartA=new FacadePartA();
            _facadePartB=new FacadePartB();
        }

        public void Show()
        {
            var message = _facadePartA.Write();
            _facadePartB.Read(message);
        }

    }//end Facade
View Code

调用

 static void Main(string[] args)
        {
          
            var facade = new Facade.Facade();

            facade.Show();

            Console.ReadLine();

        }
View Code

 使用场景:

外观模式主要用来根据不同的客户端,提供接口,方便客户调用和维护。常包装不同的对象或者细粒度服务,减少对象与对象之间的数据依赖,一般用在UI(Html或页面)层的次层。

优点

1.根据不同的客户端定制接口,比如移动,PC,微信,同样的服务根据需要可以提供不同的数据结构。

2.隐藏了部件功能实现的细节,客户端不用关心具体实现,具体实现由不同的部件去完成,然后包装就好。

缺点

1.外观类违背了设计6大原则,有利有弊

当然外观类可以根据需求去做抽象,增加其稳定性。

posted @ 2017-11-14 12:17  杜俊强  阅读(118)  评论(0编辑  收藏  举报