外观模式
一般用于系统与访问之间,用于对访问屏蔽复杂的子系统调用,采用外观类提供的调用方法,由具体的外观类去子系统调用。
外观类就是子系统对外的一个总接口。简单易用客户端不需要了解系统内部的实现,解决了客户端与子系统的耦合关系。
例如:去餐厅吃饭,只需要给服务员(外观类)点餐就可以了,来一斤蚂蚁心,我们并不需要与水洗,挖心,油炸等直接交互。
源码:
- public class 水洗{
- //示意方法
- public void test水洗(){
- System.out.println("正在清洗蚂蚁");
- }
- }
- public class 挖心{
- //示意方法
- public void test油炸(){
- System.out.println("正在挖取蚂蚁心");
- }
- }
- public class 服务员 {
- //示意方法,满足客户端需要的功能
- public void test(){
- 水洗 a = new 水洗();
- a.test水洗();
- 挖心 b = new 挖心();
- b.test挖心();
- }
- }
- public class Client {
- public static void main(String[] args) {
- 服务员 facade = new 服务员();
- facade.test();
- }
- }
输出:正在清洗蚂蚁
正在挖取蚂蚁心
不要通过继承一个外观类在子系统中加入新的行为。
外观模式的用意是为子系统提供一个集中化和简化的沟通渠道,而不是向子系统加入新的行为,
新的行为的增加应该通过修改原有子系统类或增加新的子系统类来实现,不能通过外观类来实现。