其他分享
首页 > 其他分享> > 23种设计模式之门面模式

23种设计模式之门面模式

作者:互联网

23种设计模式之门面模式

文章目录

参考资料

下文如有错漏之处,敬请指正

一、简介

定义

为多个复杂的子系统提供一个一致的接口,使调用端只能跟该接口进行交互,而无需关心子系统的内部细节。

(门面模式好比你要去注册公司,自己办理有很多流程,最简单的方法就是找代理注册,你跟代理注册的业务员对接,业务员帮你跟相关政府部门对接)

特点

通用类图

在这里插入图片描述

门面模式的重要角色:

优点

缺点

应用场景

二、门面模式

需求:

客户需要去注册公司,注册公司需要5步(这里为5步,也就是有五个子系统),客户找了代理注册帮他注册(代理注册就是门面)

子系统:

package facade;

public class Step1 {
  //	内部可能有着复杂的处理
      //	do1
      //	do2
      //	do3
      //	do...n
    public void fun(){
        System.out.println("完成步骤一");
    }
}
package facade;

public class Step2 {
    //	内部可能有着复杂的处理
    //	do1
    //	do2
    //	do3
    //	do...n
    public void fun(){
        System.out.println("完成步骤二");
    }
}
package facade;

public class Step3 {
    //	内部可能有着复杂的处理
    //	do1
    //	do2
    //	do3
    //	do...n
    public void fun(){
        System.out.println("完成步骤三");
    }
}
package facade;

public class Step4 {
    //	内部可能有着复杂的处理
    //	do1
    //	do2
    //	d03
    //	do...n
    public void fun(){
        System.out.println("完成步骤四");
    }
}
package facade;

public class Step5 {
    //	内部可能有着复杂的处理
    //	do1
    //	do2
    //	do3
    //	do...n
    public void fun(){
        System.out.println("完成步骤五");
    }
}

门面:

package facade;

public class Facade {
	//  被委托的对象,即子系统组件
	private Step1 step1;
	private Step2 step2;
	private Step3 step3;
	private Step4 step4;
	private Step5 step5;

	public Facade() {
		step1 = new Step1();
		step2 = new Step2();
		step3 = new Step3();
		step4 = new Step4();
		step5 = new Step5();
	}

	//  提供给外部访问的方法
	public void todo() {
		step1.fun();
		step2.fun();
		step3.fun();
		step4.fun();
		step5.fun();
	}

	public void todo1() {
		step1.fun();
	}

	public void todo2() {
		step1.fun();
		step3.fun();
	}

}

Client:

package facade;

public class Client {
	public static void main(String[] args) {
		Facade facade = new Facade();
		facade.todo();
		/**
		 * 输出结果:
		 * 完成步骤一
		 * 完成步骤二
		 * 完成步骤三
		 * 完成步骤四
		 * 完成步骤五
		 */
	}
}

三、总结

门面模式是一个很好的封装方法,一个子系统比较复杂时,比如算法或者业务比较复杂,就可以封装出一个或多个门面出来,项目的结构简单,而且扩展性非常好。还有,对于一个较大项目,为了避免人员带来的风险,也可以使用门面模式。

标签:facade,23,void,子系统,fun,门面,设计模式,public
来源: https://blog.csdn.net/space_qi/article/details/116133921