Android开发经验谈Android开发Android技术知识

设计模式(13)-外观模式详解(易懂)

2018-03-22  本文已影响149人  秦子帅

外观模式的定义

外观模式(Facade),也被称为“门面模式”,为子系统中的一组接口提供一个一致的界面,定义一个高层接口,这个接口使得这一子系统更加容易使用。

模型:

image

代码演示:

1.子系统:


public class SubsystemA {

   public  void methodA(){
       Log.d("qzs","子系统A");
   }
}

public class SubsystemB {
   public  void  methodB(){
       Log.d("qzs","子系统B");
   }
}

强调一下:这两个类不是独立的,可以看成是一个集合。如果不明白的话,往下面去看实例说明,应该好懂一些。

2.外观类:


public class Facade  {
   private  SubsystemA subsystemA=new SubsystemA();
   private SubsystemB subsystemB=new SubsystemB();
   //提供给客户端调用的方法
   public  void  methodFacade(){

       subsystemA.methodA();
       subsystemB.methodB();
   }
}

对外提供的方法根据客户端的需求来决定。下面通过一个实例来了解一下。


实例说明

例如我们在今日头条或者微信公众号上发布文章,经常分为两步:

1.子系统


public class Content {
   //编写的文章内容
   public  void  articleContent(String str){
       Log.d("qzs",str);
   }
   //发布文章
   public  void  release(){
       Log.d("qzs","点击提交-发布");
   }
}

public class Examine {
     //文章审核
   public  void  articleExamine(Content content){
       Log.d("qzs","此文章审核通过了");
   }
}

2.外观类


public class Facade {
   private  Examine examine=new Examine();
   private  Content content=new Content();

  // 对外提供的处理方法
   public  void  Call(String str){
       content.articleContent(str);
       content.release();
       examine.articleExamine(content);
   }
}

3.调用:


       String str="编写的文章的内容";
       Facade facade=new Facade();
       facade.Call(str);

运行:

image

强调:

子系统每个类不是独立的,两个类分为不同的模块并形成一个集合;另外子系统每个类中的方法数可以是一个或者多个。


实外观模式的优缺点及其他

1.优点

2.缺点

不符合开闭原则!!,如果对开闭原则不熟悉的朋友可以看下面的文章:

六大设计原则详解(6)-开闭原则

3.适用场景

在以下情况下可以考虑使用外观模式:

本文部分定义来源于网络


另外可以加入我的Android技术交流群:458739310
大家可以关注我的微信公众号:「安卓干货铺」一个有质量、有态度的公众号!

上一篇下一篇

猜你喜欢

热点阅读