首页 > 代码库 > 外观模式
外观模式
转载请注明原文出处,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
外观模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。