首页 > 代码库 > java设计模式--结构型模式--外观模式
java设计模式--结构型模式--外观模式
1 外观模式 2 概述 3 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 4 5 6 适用性 7 1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越 8 复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容 9 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。10 Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需11 要更多的可定制性的用户可以越过facade层。12 13 2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade将这个子系统与客14 户以及其他的子系统分离,可以提高子系统的独立性和可移植性。15 16 3.当你需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口点。17 如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们18 之间的依赖关系。19 20 21 参与者22 1.Facade23 知道哪些子系统类负责处理请求。24 将客户的请求代理给适当的子系统对象。25 26 2.Subsystemclasses27 实现子系统的功能。28 处理由Facade对象指派的任务。29 没有facade的任何相关信息;即没有指向facade的指针。
测试类:
1 public class Test { 2 3 public static void main(String[] args) { 4 ServiceA sa = new ServiceAImpl(); 5 ServiceB sb = new ServiceBImpl(); 6 7 sa.methodA(); 8 sb.methodB(); 9 10 System.out.println("========");11 //facade12 Facade facade = new Facade();13 facade.methodA();14 facade.methodB();15 }16 }
1 public interface ServiceA {2 public void methodA();3 }
1 public class ServiceAImpl implements ServiceA {2 3 public void methodA() {4 System.out.println("这是服务A");5 }6 }
1 public interface ServiceB {2 public void methodB();3 }
1 public class ServiceBImpl implements ServiceB {2 3 public void methodB() {4 System.out.println("这是服务B");5 }6 }
1 public interface ServiceC {2 public void methodC();3 }
1 public class ServiceCImpl implements ServiceC {2 3 public void methodC() {4 System.out.println("这是服务C");5 }6 }
1 public class Facade { 2 3 ServiceA sa; 4 5 ServiceB sb; 6 7 ServiceC sc; 8 9 public Facade() {10 sa = new ServiceAImpl();11 sb = new ServiceBImpl();12 sc = new ServiceCImpl(); 13 }14 15 public void methodA() {16 sa.methodA();17 sb.methodB();18 }19 20 public void methodB() {21 sb.methodB();22 sc.methodC();23 }24 25 public void methodC() {26 sc.methodC();27 sa.methodA();28 }29 }
java设计模式--结构型模式--外观模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。