外观模式(结构型)

外观模式: 为子系统中的一组接口提供一个一致的界面,外观模式(Facade)定义了一个高层接口,这个接口使得这一子系统更加容易使用

package pattern.facade;

public interface AModuleApi {

	public void testA();
}

----

package pattern.facade;

public class AModuleApiImpl implements AModuleApi {

	@Override
	public void testA() {
		System.out.println("A module");

	}

}

----

package pattern.facade;

public interface BModuleApi {

	public void testB();
}

----

package pattern.facade;

public class BModuleApiImpl implements BModuleApi{

	@Override
	public void testB() {
		
		System.out.println("B module");
		
	}

}

----

package pattern.facade;

public interface CModuleApi {

	public void testC();
}

----

package pattern.facade;

public class CModuleApiImpl implements CModuleApi{

	@Override
	public void testC() {
		
		System.out.println("C module");
		
	}

}

----

package pattern.facade;

public class Facade {

	public void test(){
		AModuleApi aModuleApi = new AModuleApiImpl();
		aModuleApi.testA();
		BModuleApi bModuleApi = new BModuleApiImpl();
		bModuleApi.testB();
		CModuleApi cModuleApi = new CModuleApiImpl();
		cModuleApi.testC();
	}
}

----

package pattern.facade;

public class Client {
	public static void main(String[] args) {
		new Facade().test();
	}
}


外观模式特点:

    外观模式的目的不是给予系统添加新的功能接口,而是为了让外部减少与子系统内部多个模块的交互,松散耦合,从而让外部能够更简单地使用子系统,外观应该是包装已有的功能,它主要复制组合以后功能来实现客户需求,而不是添加新的实现

外观模式的优点:

1、松散耦合

    外观模式松散了客户端与子系统的耦合关系,让子系统内部的模块更容易扩展和维护

2、简单易用

    外观模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟外观交互就可以了,相当于外观类为外观客户端使用子系统提供了一站式服务

3、更好地划分访问的层次

    通过合理地使用Facade,可以帮助我们更好地划分访问的层次,有些方法是对系统外的,有些方式是系统内部使用的,把需要暴露给外部的功能集中到外观中,这样即方便客户端的使用,也很好地隐藏了内部的细节

ps:外观模式的本质是:封装交互,简化调用

何时选用外观模式:

    1、如果你希望为一个复杂的子系统提供一个简单接口的时候,可以考虑使用外观模式。使用外观对象来实现大部分客户端需要的功能,从而简化客户的使用。

    2、如果想要让客户程序和抽象类的实现松散耦合,可以考虑使用外观模式,使用外观对象来将这个子系统与它的客户分离开来,从而提高子系统的独立性和可移植性

    3、如果构建多层结构的系统,可以考虑使用外观模式,使用外观对象作为每层的入口,这样可以简化层间的调用,也可以松散层次之间的耦合关系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值