外观模式

设计模式的意义在于:面向业务内容、业务数据结构和系统架构,高内聚低耦合、优雅的将平面逻辑立体化。

 1 package designPattern;
 2 /**
 3  * 外观模式
 4  * @author Administrator
 5  */
 6 public class B13_FacadeTest {
 7 
 8     /**
 9      * 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
10      * 适用于:
11      * 1.当你要为一个复杂子系统提供一个简单接口时。子系统往往因为不断演化而变得越来越
12      * 复杂。大多数模式使用时都会产生更多更小的类。这使得子系统更具可重用性,也更容
13      * 易对子系统进行定制,但这也给那些不需要定制子系统的用户带来一些使用上的困难。
14      * Facade可以提供一个简单的缺省视图,这一视图对大多数用户来说已经足够,而那些需
15      * 要更多的可定制性的用户可以越过facade层。
16      * 2.客户程序与抽象类的实现部分之间存在着很大的依赖性。引入facade将这个子系统与客
17      * 户以及其他的子系统分离,可以提高子系统的独立性和可移植性
18      * 3.当你需要构建一个层次结构的子系统时,使用facade模式定义子系统中每层的入口点。
19      * 如果子系统之间是相互依赖的,你可以让它们仅通过facade进行通讯,从而简化了它们
20      * 之间的依赖关系
21      */
22     public static void main(String[] args) {
23         Facade f=new Facade();
24         f.methodA();
25     }
26 }
27 //1.Facade 知道哪些子系统类负责处理请求。将客户的请求代理给适当的子系统对象。
28 class Facade
29 {
30     ServiceA sa;
31     ServiceB sb;
32     ServiceC sc;
33     public Facade() {
34         this.sa = new ServiceAImpl();
35         this.sb = new ServiceBImpl();
36         this.sc = new ServiceCImpl();
37     }
38     public void methodA()
39     {
40         sa.method();
41         sb.method();
42     }    
43     public void methodB()
44     {
45         sb.method();
46         sc.method();
47     }
48     public void methodC()
49     {
50         sa.method();
51         sc.method();
52     }
53 }
54 //2.Subsystemclasses
55 //实现子系统的功能。处理由Facade对象指派的任务。没有facade的任何相关信息;即没有指向facade的指针。
56 class ServiceAImpl implements ServiceA
57 {
58     public void method()
59     {
60         System.out.println("这是服务A...");
61     }
62 }
63 class ServiceBImpl implements ServiceB
64 {
65     public void method()
66     {
67         System.out.println("这是服务B...");
68     }
69 }
70 class ServiceCImpl implements ServiceC
71 {
72     public void method()
73     {
74         System.out.println("这是服务C...");
75     }
76 }
77 //3.SYSTEM interface
78 interface ServiceA
79 {
80     void method();
81 }
82 interface ServiceB
83 {
84     void method();
85 }
86 interface ServiceC
87 {
88     void method();
89 }

 

环境:JDK1.6,MAVEN,tomcat,eclipse

源码地址:https://files.cnblogs.com/files/xiluhua/designPattern.rar

欢迎亲们评论指教。

posted @ 2015-04-10 10:08  xiluhua  阅读(191)  评论(0编辑  收藏  举报