zoukankan      html  css  js  c++  java
  • 外观模式

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

     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

    欢迎亲们评论指教。

  • 相关阅读:
    Socket 的网络编程
    《Python 3.5从零开始学》笔记-第8章 面向对象编程
    Python 的8个关键要素
    分布式发布订阅模型网络的实现有哪些
    MongoDB知识整理
    C++模板类与Qt信号槽混用
    C++中 =default,=delete用法
    QT知识整理
    Python题整理
    STL库的应用
  • 原文地址:https://www.cnblogs.com/xiluhua/p/4413786.html
Copyright © 2011-2022 走看看