(6)外观模式
外观模式是一个很常用的模式,它最大的特点将细粒度的对象包装成粗粒度的对象,可以这样理解,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。我发现设计模式一直在讲抽象和封装,当然不只是抽象和封装。这种思想将会一直伴随软件开发吧……
它是这样定义的:
Facade,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
外观模式的结构图:
分析结构图:
红色框即SubSystem Classes,是子系统类集合,实现子系统的功能,处理Facede对象指派的任务,值得注意的是子类中没有Facede的任何信息,即没有对Facede对象的引用。
Facede是外观类,它知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。
有了外观模式,Client客户就不必与子系统类直接打交道,而是通过外观类这个接口降低了依赖性。完美地体现了依赖倒转原则(针对接口编程,不要对实现编程)和迪米特法则(如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用)。
由结构图写出外观模式的代码:
1.为一个复杂子系统提供一个简单接口,这样再调用这个子系统的时候就不会那么复杂了。2.提高子系统的独立性,外观模式就是在解耦,耦合性降低了子系统的独立性就提高了。
3.在层次化结构中,可以使用Facade模式定义系统中每一层的入口。
外观模式与代理模式的区别:
代理模式
1代理模式中的原类和代理类继承同一父类;
2原类对象与代理类对象接口相同,功能一致;
3 起到了隐藏原类的作用。
外观模式
是多个类的集成、统一适配。
今天学习这个模式并没有感到纠结,感觉越来越简单了,是不是接下来学得会更快呢?希望是吧。
- 2楼lfmilaoshi昨天 20:56
- 接下来,肯定更快
- 1楼wlccomeon昨天 15:25
- 加油~