java设计模式_外观模式

package com.wangbiao.design.facade;

/**
 * 
 * @Title: Client.java
 * @Package com.wangbiao.design.facade
 * @Description: TODO 
 * @author wangbiao   
 * @date 2014-9-20 下午03:56:08 
 * @version V1.0
 */

public class Client {

    public static void main(String[] args) {
        Facade facade = new Facade();
        facade.methodA();
        facade.methodB();

    }

}

package com.wangbiao.design.facade;

/**
 * 
 * @Title: Facade.java
 * @Package com.wangbiao.design.facade
 * @Description: Design Pattern-Facade 
 * @author wangbiao   
 * @date 2014-9-20 下午03:54:02 
 * @version V1.0
 */

public class Facade {
    
    private SubSystemOne one;
    private SubSystemTwo two;
    private SubSystemThree three;
    private SubSystemFour four;
    
    public Facade() {
        //init
        one = new SubSystemOne();
        two = new SubSystemTwo();
        three = new SubSystemThree();
        four = new SubSystemFour();
    }
    

    public void methodA(){
        // one,two,three
        one.methodOne();
        two.methodTwo();
        three.methodThree();
    }
    
    public void methodB(){
        // four,three
        three.methodThree();
        four.methodFour();
    }
    
}

class SubSystemOne{
    
    public void methodOne(){
        System.out.println("SubSystemOne");
    }
    
}

class SubSystemTwo{
    
    public void methodTwo(){
        System.out.println("SubSystemTwo");
    }
    
}

class SubSystemThree{
    
    public void methodThree(){
        System.out.println("SubSystemThree");
    }
    
}

class SubSystemFour{
    
    public void methodFour(){
        System.out.println("SubSystemFour");
    }
    
}
时间: 2024-08-11 07:34:30

java设计模式_外观模式的相关文章

Java 设计模式_代理模式(2016-08-19)

概念: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 就是一个人或者机构代表另一个人或者机构采取行动.在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用. 类图: 在代理模式中的角色: ● 抽象对象角色:声明了目标对象和代理对象的共同接口,这样一来在任何可以使用目标对象的地方都可以使用代理对象. ● 目标对象角色:定义了代理对象所代表的目标对象. ● 代理对象角色:代理对象内部含有目标对象的

java设计模式之外观模式(门面模式)

针对外观模式,在项目开发和实际运用中十分频繁,但是其极易理解,下面就简要介绍一下. 一.概念介绍 外观模式(Facade),他隐藏了系统的复杂性,并向客户端提供了一个可以访问系统的接口.这种类型的设计模式属于结构性模式.为子系统中的一组接口提供了一个统一的访问接口,这个接口使得子系统更容易被访问或者使用. 二.角色及使用场景 简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用.这个模式中,设计到3个角色. 1).门面角色:外观模式的核心.它被客户角色调用,它熟悉子系统的功

11.设计模式_外观模式

一.引言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然而为了将复杂系统的内部子系统与客户端之间的依赖解耦,从而就有了外观模式,也称作 "门面"模式.下面就具体介绍下外观模式. 二.外观模式的详细介绍 2.1 定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口.外观定义了一个高层接口,让子系统更容易使用.使用外观模式时,我们创建了一个统一的类,用来包装子系统中一个或多个复杂的类,客户端可以直接通过外观类来调用内

Java 设计模式:外观模式Facade

Facade 外观模式 外观模式----为子系统的一组接口提供一个统一的界面,此模式定义了一个更高层的接口,这一接口使得子系统更容易使用. 借用<大话设计模式>中的例子:市场上有N多只股票,当股民想要买股票时为了最大化自己的收益需要考察市面上很多种类的股票,然后根据自己的判断选取几只股票组合购买(这种场景下每一只股票都是可以单独购买的,用户需要考察.选取一组股票来一起购买).而有的用户直接购买基金,基金的作用是帮用户选取几只股票来组合购买,用户不用自己去选取多只股票. 在这个场景下:单独的购买

【JAVA设计模式】外观模式(Facade Pattern)

一  定义 为子系统中的一组接口提供一个一致的界面.Facade模式定义了一个高层的接口,这个接口使得这一子系统更加easy使用. 二  案例 一个子系统中拥有3个模块.每一个模块中都有3个方法.当中一个为client调用方法,其它两个则为各子模块间互相调用方法.此时有例如以下需求,client为完毕功能.须要组合3个模块中的方法才干实现功能. 三  未使用模式情况 /** * @Description A模块 * @author jerry * @date 2016年4月11日下午2:16:0

JAVA设计模式之外观模式

外观模式:外观模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,隐藏子系统的复杂性,使子系统更加容易使用.即当子系统复杂或者繁锁时,我们为子系统提供一个接口,其它程序或者对象就通过这个接口与此子系统联系.接口可以是类或方法等.这样就简化了子系统的使用. 简单例子: 1 public interface Camera 2 { 3 public void setPosition(); 4 public void setShutter(); 5 public void setAperture

Java设计模式之外观模式(facade)

随着项目的不断壮大,在controller层会注入数量庞大的service服务,为了降低类与类之间的耦合,提出外观模式,在实际开发中,在原有的层级上添加facade层,在编码过程中, 使facade层作为服务的统一入口,然后再由facede调用其他服务层代码,使得代码结构更清晰. 原文地址:https://www.cnblogs.com/zuok9527/p/11993925.html

java设计模式_桥接模式

现在的手机,按照操作系统分,有ios,有android,还有window phone等. 如果是按软件来分的话,就有通讯录,游戏等. 按继承的思维来考虑的话,如下: 但是问题来了,如果是按照手机品牌来分的话,增加一个新的手机品牌的话,意味着不仅要增加手机品牌,还要增加改手机品牌的通讯录和游戏. 若按照手机软件来分的话,同样,增加一个新的软件的话,意味着不仅要增加新的软件,还要增加各个品牌手机对应的通讯录和游戏. 通过桥接模式的话,若增加软件,则只需要增加软件即可,若增加品牌,只需增加品牌即可.

java设计模式_建造者模式

/**  *   */ package com.wangbiao.design.builder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /**  * @Title: Product.java  * @Package com.wangbiao.design.builder  * @Description: TODO   * @author wangbiao     * @date