外观模式之java实现



站在用户角度:用户做一件事,本来需要去了解做这些事的具体流程(并且这些事的流程的各个子流程是可以进行组合使用的),但是现在用户希望一个对象能够把这些流程集中在一起,用户调用这个对象的方法就可以实现这个流程而不是让用户知道这个流程是什么样子的。

站在实现者角度:满足用户需求,暴露一些方法(每个方法都是一些子流程的组合),此时实现者需要知道每个子流程相关的对象。

package com.facade;

/**
 * 为了满足用户需求 需要有一个外观对象知道所有实现这些子流程的对象
 * 并且外观对象需要调用它们 用户有事就找外观
 * @author 黄二狗
 *
 */
public class Facade {

    private SubSystemOne subSystemOne;
    private SubSystemTwo subSystemTwo;
    private SubSystemThree subSystemThree;

    //外观需要知道所有实现子流程的对象
    public Facade()
    {
        subSystemOne=new SubSystemOne();
        subSystemTwo=new SubSystemTwo();
        subSystemThree=new SubSystemThree();
    }

    public void methodA()
    {
        //具体子流程的排列组合
        subSystemOne.MethodOne();
        subSystemOne.MethodOne2();
        subSystemThree.MethodThree();
    }

    public void methodB()
    {
        subSystemOne.MethodOne2();
        subSystemOne.MethodOne();
        subSystemThree.MethodThree();
        subSystemTwo.MethodTwo();
    }

}
package com.facade;

/**
 * 子流程对象A  这些子流程一般不是同一条继承链上的对象
 * @author 黄二狗
 *
 */
public class SubSystemOne {

    public void MethodOne()
   {
       System.out.println("子流程对象One的第一个方法");
   }

   public void MethodOne2()
   {
       System.out.println("子流程对象One的第二个方法");
   }
}
package com.facade;

public class SubSystemTwo {

    public void MethodTwo()
       {
           System.out.println("子流程对象Two的第一个方法");
       }
}
package com.facade;

public class SubSystemThree {
    public void MethodThree()
       {
           System.out.println("子流程对象Thtee的第一个方法");
       }
}
package com.facade;

public class Client {
   public static void main(String[] args) {
    Facade facade=new Facade();
    //第一套流程
    facade.methodA();
    System.out.println("==================分割线=============================");
    //第二套流程
    facade.methodB();
  }
}

时间: 2024-11-04 19:32:29

外观模式之java实现的相关文章

Java设计模式11:外观模式

外观模式 外观模式是对象的结构模式,外部与一个子系统的通信必须通过一个统一的外观对象进行.外观模式是一个高层次的接口,使得子系统更易于使用. 医院的例子 现代的软件系统都是比较复杂的.假如把医院比作一个子系统,按照部门职能,这个系统划分为挂号.门诊.划价.化验.收费.取药等.看病的人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事. 解决这种不便的方法便是引入外观模式,医院可以设置一个接待员的位置,由接待员负责代为挂号.划价.缴费.取药等.病人只需要接

Fun论设计模式之3:外观模式(Facade Pattern)

在上一篇文章Fun论设计模式之2:代理模式(Proxy Pattern)中,我们知道了代理模式本质上就是对类的访问过程做同样类型的控制. 那里有提到,把不同模块的API也放到代理类中,并给这些API做相同的前置处理,就可以减少日后的工作量.这个处理,也涉及到一个设计模式——外观模式. 搬运runoob的描述: 意图:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 主要解决:降低访问复杂系统的内部子系统时的复杂度,简化客户端与之的接口. 何

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java语言实现结构型设计模式—外观模式

一.描述 外观模式又叫门面模式,就是对一个复杂的系统进行包装,该系统对外的接口统一由外观类提供.当一个复杂的系统需要对外提供接口时,就需要将对外提供的接口统一封装在一个外观类中供外系统使用.外观模式最大的特点就是将细粒度的对象包装成粗粒度的对象,应用程序通过访问这个外观对象来完成细粒度对象的调用.这样应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性. 总的来说,外观模式就是为子系统对外提供的一组接口,这组接口提供一个统一的界面,使得其它

Java设计模式(五)外观模式 桥梁模式

(九)外观模式 外观模式为子系统提供一个接口,便于使用.解决了类与类之间关系的,外观模式将类之间的关系放在一个 Facade 类中,降低了类类之间的耦合度,该模式不涉及接口. class CPU { public void startup(){ System.out.println("cpu start"); } public void shutdown(){ System.out.println("cpu stop"); } } class Memory { pu

Java经典23种设计模式之结构型模式(三)------附代理模式、适配器模式、外观模式区别

本文介绍7种结构型模式里的剩下两种:享元模式.代理模式. 一.享元模式FlyWeight 享元模式比较简单且重要,在很多场合都被用到,只不过封装起来了用户看不到.其概念:运用共享内存技术最大限度的支持大量细粒度的对象.这个概念给的有些抽象,说白了就是如果内存中存在某个对象A,如果再次需要使用对象A的时候如果内存中有A这个对象就直接使用它,不要再次new了.如果没有,则重新new一个.基于这个特点,享元模式使用时一般会给待访问对象传递一个Tag,用来标识这个对象,而且要同时使用抽象工厂的方法进行访

java设计模式--外观模式(Facade)

外观模式是为了解决类与类之家的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口,看下类图:(我们以一个计算机的启动过程为例) 我们先看下实现类: [java] view plain copy public class CPU { public void startup(){ System.out.println("cpu startup!"); } public v

Java常用的设计模式12:常用设计模式之外观模式(结构型模式)

1. Java之外观模式(Facade Pattern) (1)概述:       现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统.如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号.门诊.划价.化验.收费.取药等.看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情. 外观模式 (Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个

《Java设计模式》之外观模式

外观模式(Facade pattern)涉及到子系统的一些类.所谓子系统,是为提供一系列相关的特征(功能)而紧密关联的一组类.例如,一个Account类.Address类和CreditCard类相互关联,成为子系统的一部分,提供在线客户的特征. 在真实的应用系统中,一个子系统可能由很多类组成.子系统的客户为了它们的需要,需要和子系统中的一些类进行交互.客户和子系统的类进行直接的交互会导致客户端对象和子系统(Figure1)之间高度耦合.任何的类似于对子系统中类的接口的修改,会对依赖于它的所有的客