4-外观模式(门面模式)

外观模式(门面模式)

门面(外观)模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。

使用场景

1、客户只需要使用某个复杂系统的子集,或者需要以一种特殊的方式与系统交互时,使用门面模式。

​ 2、当需要跟踪原系统的使用情况时 ,使用门面模面模式。因为所有对系统的访问都经过FACADE,所以可以很容易地监视系统的使用 。如使用中根据情况记录日志。

​ 3、 希望封装和隐藏原系统时。

​ 4、编写新类的成本小于所有人使用原系统使用所需的成本时

外观(门面)模式

在这里插入图片描述

将复杂的子系统调用逻辑封装起来,便于客户端调用。

子系统类

//子系统(服务类)
public class Service1 {
    public boolean isOK(int sigin){ //检查是否通过
        return sigin==1?true:false;
    }
}
-----------------------------
public class Service2 {
    public boolean isOK(int sigin){ //检查是否通过
        return sigin==1?true:false;
    }
}
------------------------------
public class Service3 {
    public boolean isOK(int sigin){ //检查是否通过
        return sigin==1?true:false;
    }
}

在一个逻辑操作中需要用到的所有子系统

门面类

//门面类
public class Facade {
    Service1 service1=new Service1();
    Service2 service2=new Service2();
    Service3 service3=new Service3();

    public boolean check(int sigin) {
        if(!service1.isOK(sigin)) return false;
        if(!service2.isOK(sigin)) return false;
        if(!service3.isOK(sigin)) return false;
        return true;
    }
}

将所有子系统调用逻辑与顺序封装在门面类中,既简化了客户端调用、也可以在调用依次过程中进行记录日志等逻辑。

测试类

//测试类
class Test {
    public static void main(String[] args) {
        Facade facade=new Facade();
        System.out.println(facade.check(1));
    }
}

客户类只需要调用门面类的方法即可,封装省去了繁琐的步骤。

发布了27 篇原创文章 · 获赞 1 · 访问量 905

猜你喜欢

转载自blog.csdn.net/hu853996234/article/details/103228782