• 外观模式


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

     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

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

    欢迎亲们评论指教。

  • 相关阅读:
    贪婪与非贪婪模式
    Arduino语言介绍
    POJ 3249 记忆化搜索或拓扑排序
    POJ 3177 缩点 + 边双连通图
    POJ 1637 网络流构图
    hdu 1285 拓扑排序+优先队列
    POJ 3160 缩点+拓扑排序+简单dp
    POJ 3592 缩点+拓扑排序+最长路
    针对11级队员的暑假训练计划(初稿)
    POJ 2762 缩点+判断是否是最长链
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413786.html
Copyright © 2020-2023  润新知