美文网首页Android学习Android设计模式
Android设计模式-22-外观模式

Android设计模式-22-外观模式

作者: 今阳说 | 来源:发表于2021-02-01 09:26 被阅读0次

    1. 定义

    隐藏系统的复杂性,并向客户端提供了一个客户端可以访问系统的接口

    通过创建一个统一的类,用来包装子系统中一个或多个复杂的类

    (由外观类去保存各个子系统的引用,实现由一个统一的外观类去包装多个子系统类,然而客户端只需要引用这个外观类,然后由外观类来调用各个子系统中的方法)

    2. 使用场景

    1. 为复杂的模块或子系统提供外界访问的接口

    2. 子系统相对独立

    3. 预防低水平人员带来的风险

    3. 优缺点

    优点:

    1. 降低了客户类与子系统类的耦合度,实现松耦合关系2. 对客户屏蔽了子系统组件,从而简化了接口,减少了客户处理的对象数目并使子系统的使用更加简单。3. 降低原有系统的复杂度和系统中的编译依赖性,并简化了系统在不同平台之间的移植过程

    缺点:

    1. 在不引入抽象外观类的情况下,增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”2. 不能很好地限制客户使用子系统类,如果对客户访问子系统类做太多的限制则减少了可变性和灵活性。

    4. Android源码中的使用:

    Context封装了很多操作,如startActivity(),sendBroadcast(),bindServiced()等,相当于抽象外观类,Context的子系统中去实现这些方法,如ActivityManagerService实现startActivity(),PackageManagerService实现包信息相关方法,ContextImpl则是Context的实现类,也就是外观类,其内部调用这些子系统的实现,而Activity相当于客户端,其上两层父类ContextWrapper中有个一个Context类型的mBase字段,其实际类型是ContextImpl,是对外观类的调用,例如ContextWrapper中:

    5. 实例演示

    以智能家居,统一管理家电为例

    1. 各种家电作为子系统,如灯,电视,空调等

    2. 智能遥控器作为外观类(现在很多有红外功能的Andorid手机都有智能遥控器app, 比如我常用的遥控精灵就挺好用,不用再去抱着一大堆的各种遥控器)

    3. 通过外观类去操作各子系统

     我是今阳,如果想要进阶和了解更多的干货,欢迎关注公众号”今阳说“接收我的最新文章

    相关文章

      网友评论

        本文标题:Android设计模式-22-外观模式

        本文链接:https://www.haomeiwen.com/subject/qmcjtltx.html