`

设计模式--------Facade~~外观模式~~门面

阅读更多
可以看成事对多个方法的封装。。。。。对多个对象的代理。。目的是为了使得接口变简单

  如果一个客户要和系统打交道,他发现需要理解系统内部错综复杂的业务逻辑
所以我们给这个系统加一个类,来帮助客户完成这些复杂的工作,只是提供一个接口给用户就可以了,这就是外观,那个类也就是对外的一个门面而已,实际中的例子:去政府办事特别麻烦,我们需要了解这其中的很多东西,说明政府没有一个Facade,用head first的话: 外观使得接口更简单

public class HomeTheaterFacade{
 Amplifier amp;
 Turner turner;
 DvdPlayer cd;
 Projector projector;
 ThreaterLights lights;
 Screen screen;
 PopcornPopper popper;

 public HomeTheaterFacade(Amplifier amp,
        Turner turner,
         DvdPlayer cd,
         Projector projector,
         ThreaterLights lights,
         Screen screen,
         PopcornPopper popper){
      this.amp = amp;
      ......
 }

public void watchMovie(String movie){
   popper.om();
   popper.pop();
   lights.dim(10);
   ......
}

}

//外观把所做的事情委托给子系统完成。。。。客户只认识外观这一个朋友,所以遵循了最小知识原则

//下面是最小知识原则的备忘

public float getTemp(){
   Thermometer t = station.getThermometer();
   return t.getTemperature();
}

public float getTemp(){
   return station.getTemperature();//我们在别处加一个方法用来想温度计请求温度,这样我们可以减少所依赖的类的数目。。。这就是最小知识原则。。。坏处:导致复杂度和开发时间的增加,并降低运行时的性能。。。
}


//下面是设计模式之禅的笔记。。。很好

写信有四个步骤。。而且不能颠倒

public interface LetterProcess{
    //首先要写信的内容
   public void writeContext(String context);
   //其次写信封
   public void fillEnvelope(String address);
   //把信放到信封里
   public void letterIntoEnvelope();
   //然后邮递
   public void sendLetter();
}



//具体写信过程
public class LetterProcessImpl implements LetterProcess{
   public void writeContext(String context){
       System.out.println("填写信内容。。。"+context);
   }
  
   public void fillEnvelope(String address){
       System.out.println("填写收信人地址以及姓名.."+address);
   }

    public void letterIntoEnvelope(){
      System.out.println("把信放到信封中...");
    }
    
    public void sendLetter(){
       System.out.println("邮递信封....");
    }
}


开始写信:

public class Client{
   public static void main(String[] args){
      LetterProcess letterProcess = new LetterProcessImpl();
      letterProcess.writeContext("hello,it's me ,how do you do");      
      letterProcess.fillEnvelope("happy road N0.666");
       
      letterProcess.letterIntoEnvelope();

      letterProcess.sendLetter();
       
   }
}

//上面的写法,客户必须知道这四个步骤,还要知道 这四个步骤的顺序,不好。。。

把这四个步骤封装起来

public class ModenPostOffice{
   private LetterProcess letterProcess = new LetterProcessImpl();

  public void sendLetter(String context,String address){
       letterProcess.writeContext(context);
       letterProcess.fillEnvelope(address);
       letterProcess.letterIntoEnvelope();
       letterProcess. sendLetter();
  }
}

然后就调用这个地域路邮局就可以了。。。不要分开来调用



分享到:
评论

相关推荐

    c++设计模式-结构型模式-外观模式

    c++设计模式-结构型模式-外观模式;qt工程;c++简单源码; 外观(Facade)模式又叫作门面模式,是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,...

    23种设计模式--门面模式

    门面模式(Facade Pattern)是软件工程中一种常用的设计模式,属于结构型模式。它为一个复杂的子系统提供了一个统一的接口,使得客户端可以更容易地使用这个子系统,而无需了解其内部的具体实现细节。在实际开发中,...

    设计模式之门面模式(Facade模式)

    设计模式之门面模式(Facade模式),介绍门面模式,实际例子分析,代码讲解等

    迪米特法则---门面Facade模式.docx

    门面(Facade)模式是一种设计模式,遵循迪米特法则,旨在简化子系统的使用,减少客户端与子系统之间的复杂依赖关系。迪米特法则主张一个对象应该尽量减少与其他对象的交互,只与直接的朋友交流,以此提高系统的内聚...

    Head.First设计模式--22~39.rar.pdf (C#)

    12. **外观模式**(Facade):33章讲述了外观模式,它提供了一个统一的接口,用来访问子系统的一组接口。在C#中,外观模式可以简化客户端对复杂系统交互的处理。 13. **门面模式**(Façade):此模式与33章的外观...

    JAVA设计模式-设计模式公司出品

    设计模式公司出品的《JAVA设计模式》书籍,详细介绍了多种设计模式,适合不同水平的程序员学习和使用。 首先,我们来了解什么是设计模式。设计模式是软件开发过程中遇到的某一类问题的典型解决方案。它们通常被分为...

    c#代码介绍23种设计模式-11外观模式(附代码)

    在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式 1. 外观模式定义: ...

    7.设计模式-门面模式1

    门面(Facade)模式是一种设计模式,它在软件工程中被广泛使用,目的是为了提供一个更简单、更统一的接口来访问复杂的子系统。通过门面模式,客户端(调用者)无需直接与子系统中的多个组件交互,而是只需要与门面...

    java 设计模式-个人总结

    ### Java设计模式——个人总结 #### 一、概述 本文档总结了常见的Java设计模式及其应用,涵盖了十种经典的设计模式,并提供了相应的代码示例。这些设计模式旨在解决软件开发过程中遇到的一系列常见问题,帮助...

    设计模式C++学习之门面模式(Facade)

    门面模式(Facade)是设计模式中的一种结构型模式,它的主要目的是为了解决复杂的系统接口问题,提供一个简单的统一接口,使得客户端可以更方便地使用系统。在C++编程中,门面模式的应用尤为常见,它能有效地降低...

    设计模式 之 “门面模式[Facade Pattern]”

    门面模式(Facade Pattern)是软件工程中一种常用的结构型设计模式,它的主要目的是提供一个统一的接口,用来简化系统中一组复杂的接口或类的使用。这个模式将复杂的子系统接口封装在一个简单的门面对象中,使得...

    设计模式之Facade

    eclipse工程文件 包含代码 有助理解 门面(Facade)模式 <br>外部与一个子系统的通信必须通过一个统一的门面(Facade)对象进行,这就是门面模式。 <br>医院的例子 <br>用一个例子进行说明,如果把医院...

    C++设计模式课件14_Facade_门面模式.pdf

    ### C++设计模式之门面模式(Facade Pattern) #### 一、门面模式概述 在软件工程领域,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易...

    08-Facade.rar

    门面(Facade)设计模式是一种结构型设计模式,它的主要目的是提供一个统一的接口,用来访问子系统中的多个接口,使子系统更加容易被使用。这个模式简化了客户端与复杂系统之间的交互,使得客户端无需了解子系统内部...

    base-facade.zip

    "base-facade.zip"这个压缩包文件的名称暗示了其内容可能与软件设计模式中的“基类门面”(Base Facade)有关。在软件工程中,门面模式是一种结构型设计模式,它提供了一个统一的接口,用来简化一个复杂的系统或者子...

    C#设计模式.PDF

    根据提供的文档概览,我们可以对每个章节所涉及的设计模式进行详细的阐述和解释。下面将针对文档中提及的设计模式逐一展开,以便更好地理解这些模式的概念、结构、应用场景以及优缺点。 ### 1. 面向对象程序设计...

    外观模式facade

    外观模式(Facade)是设计模式中的一种结构型模式,它为复杂的系统或子系统提供了一个统一的入口点,简化了客户端与系统之间的交互。通过外观模式,我们可以将系统的内部复杂性隐藏起来,使得用户只需要与一个简单的...

    设计模式之外观模式

    外观模式(Facade Pattern)是设计模式中的一种结构型模式,它的主要目的是为了解耦系统,提供一个统一的入口,使得客户端可以更容易地使用复杂的子系统。在Java中,外观模式通常用于简化对复杂系统的访问,它创建了...

Global site tag (gtag.js) - Google Analytics