0
点赞
收藏
分享

微信扫一扫

外观模式(Facade)


定义:

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

外观模式的结构和说明:


外观模式(Facade)_客户端




Facade:定义子系统的多个模块对外的高层接口,通常需要调用内部多个模块,从而把客户的请求代理给适当的子系统对象。

模块:接受Facade对象的委派,真正实现功能,各个模块之间可能有交互。

由于外观模式的结构图过于抽象,因此把它稍微具体点,假设子系统内有三个模块,分别是AModule、BModule和CModule,它们分别有一个示意的方法,此时示例的整体结构如图:




外观模式(Facade)_外观模式_02


示意图的示例代码:

(1)模块1的接口及实习

public interface AModelApi
{
public void testA();
}

public class AModelImpl implement AModelApi
{
public void testA()
{
System.out.println("testA");
}
}



(2)模块2的接口及实现

public interface BModelApi
{
public void testB();
}

public class BModelImpl implements BModelApi
{
public void testB()
{
System.out.println("testB");
}
}

(3)模块3的接口及实现

public interface CModelApi
{
public void testC();
}
public class CModelImpl implements CModelApi
{
public void testC()
{
System.out.println("testC");
}
}

定义外观对象:

public class Facade
{
public class test()
{
AModelApi a=new AModelImpl();
a.testA();
BModleApi b=new AModleImpl();
b.testB();
CModleApi c=new CModleImpl();
c.testC();
}
}

客户端:

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

外观模式的目的:

外观模式的目的不是给子系统添加新的功能接口,而是为了让外部减少与子系统内多个模块的交互,松散耦合从而让外部能够更简单地使用子系统。

外观模式的调用顺序示意图:


外观模式(Facade)_客户端_03


外观模式的优点:

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

外观模式的本质:

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

Facade封装了子系统外部和子系统内部多个模块的交互过程,从而简化了外部的调用,通过外观,子系统为外部提供了一些高层的接口,以方便她们的使用。

使用外观模式很好地体现了最少知识原则。

举报

相关推荐

Facade外观模式

0 条评论