首页 > 代码库 > 外观模式

外观模式

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992355.html

 

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

public interface AModuleApi 
{
public void testA();
}

public class AModuleImpl implements AModuleApi
{
public void testA()
{
System.out.println("现在在A模块里面操作testA方法");
}
}

public interface BModuleApi
{
public void testB();
}

public class BModuleImpl implements BModuleApi
{
public void testB()
{
System.out.println("现在在B模块里面操作testB方法");
}
}

public interface CModuleApi
{
public void testC();
}

public class CModuleImpl implements CModuleApi
{
public void testC()
{
System.out.println("现在在C模块里面操作testC方法");
}
}

public class Facade
{
public void test()
{
AModuleApi a = new AModuleImpl();
a.testA();
BModuleApi b = new BModuleImpl();
b.testB();
CModuleApi c = new CModuleImpl();
c.testC();
}
}

public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Facade().test();

     //绕过Facade,直接调用具体模块
     CModuleApi c = new CModuleImpl();
     c.testC();
}
}

外观从表面看,只是把客户端的代码搬到了Facade里面实现,但是实质发生了变化。这样的变化对使用Facade的人员来说,Facade大大节省了他们的学习成本,他们只需要了解Facade即可,无须深入到子系统内部,去了解每个模块的细节,也不用与多个模块交互,从而使得开发简单,学习也容易。

但是虽然有了外观,但是外部还是可以绕开Facade,而直接调用某个具体模块的接口,这样就能够实现兼顾组合功能和细节功能。

 

转载请注明原文出处,http://www.cnblogs.com/flyingcloude/p/6992355.html

外观模式