外观模式(门面模式)

//飞机
public class Plane {

    public void buyTicket(){
        System.out.println("订购飞机票");
    }
}
//火车
public class Train {
    public void buyTicket(){
        System.out.println("订购火车票");
    }
}
//景点
public class Scenery {
    public void buyTicket(){
        System.out.println("购买景点门票");
    }
}
//旅游公司(门面对象)
public class TripCompany {
    private Plane plane;

    private Train train;

    private Scenery scenery;

    public TripCompany() {
        plane=new Plane();
        train=new Train();
        scenery=new Scenery();
    }
    //报团旅游
    public void orderTrip(){
        plane.buyTicket();//买飞机票
        train.buyTicket();//买火车票
        scenery.buyTicket();//买景点门票

    }
    //用户也可以只订购机票
    public void buyPlaneTicket(){
        plane.buyTicket();
    }
    //用户也可以只订购火车票
    public void buyTrainTicket(){
        train.buyTicket();
    }
    //用户也可以只订购景点门票
    public void buySceneryTicket(){
        scenery.buyTicket();
    }
}
public class Test {
    public static void main(String[] args) {
        TripCompany tripCompany = new TripCompany();//旅游公司

        tripCompany.orderTrip();//用户报团旅游

        tripCompany.buyPlaneTicket();//也有用户只是想在旅游公司网订机票
        tripCompany.buyTrainTicket();//也有用户只想在旅游公司订火车票
        tripCompany.buySceneryTicket();//也有用户只想在旅游公司买景点门票
    }
}

原文地址:https://www.cnblogs.com/yangxiaohui227/p/10916506.html

时间: 2024-10-03 22:19:40

外观模式(门面模式)的相关文章

外观模式 门面模式 Facade 创建型 设计模式(十三)

外观模式(FACADE) 又称为门面模式 意图 为子系统中的一组接口提供一个一致的界面 Facade模式定义了一个高层接口,这一接口使得这一子系统更加易于使用. 意图解析 随着项目的持续发展,系统基本上都是会往功能更全面的方向发展,那么也就意味着我们的系统将会变得更加复杂. 系统会被划分为多个单独的子系统,每个子系统完成一部分功能,通过分工协作完成全部功能. 一个子系统也可能进一步拆分为更小的几个子系统. 程序中的文件将会越来越多,相互关联也会变得更加复杂 当使用一个功能的时候,作为客户端 你需

设计模式--结构模式--门面模式

一.基本概念 1.外观模式(Facade),也被称为"门面模式".定义了一个高层.统一的接口,外部通过这个统一的接口对子系统中的一群接口进行访问. 2.角色 A:外观(Facade)角色:为多个子系统对外提供一个共同的接口. B:子系统(Sub System)角色:实现系统的部分功能,客户可以通过外观角色访问它. C:客户(Client)角色:通过一个外观角色访问各个子系统的功能. 二.例子. 分诊台作为患者和医生的装饰. A:外观(Facade)角色: 1 package comm.

混合模式(策略模式+工厂方法模式+门面模式)

使用这三种模式设计一个简单的计算器程序:计算器是用于计算数值之间进行数学计算后所获得的值.它包含基本的"加减"功能.以上对以上需求进行分析可以得出计算有两种策略(+与-). 计算策略的实现: /*抽象策略*/public interface Strategy{ /*定义了计算策略所拥有的算法*/ public int calculate(int a,int b);} /*加法策略的实现*/public class AddStrategy implements Strategy{ @Ov

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

外观模式真是比单例模式还要简单了,毕竟单例还有八种写法 简介 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 实例探究 假设一台电脑,它包含了 CPU(处理器),Memory(内存) ,Disk(硬盘)这几个部件,若想要启动电脑,则先后必须启动 CPU.Memory.Disk.关闭也是如此. 但是实际上我们在电脑开/关机时根本不需要去操作这些组件,因为电脑已经帮我们都处理好了,并隐藏了这些东西. 这些组件好比子系统角

设计模式之门面模式

门面模式 门面模式是把具体的实现放在自己内部,对外提供一个外观给外部去调用.让使用者可以很方便地使用它.这样可以做到内部的变更交给内部自己去处理,使得责任单一.也让我们的系统不需要暴露太多的细节给外部. 实例代码 public class User { private String name; private String password; public String getName() { return name; } public void setName(String name) { t

java设计模式5.组合模式、门面模式、享元模式、桥接模式

组合模式 在面向对象的语言中,树结构有着巨大的威力,一个基于继承的类型的等级结构便是一个数结构,一个基于合成的对象结构也是一个数结构.组合模式将部分与整体的关系用树结构表示出来,使得客户端把一个个单独的成分对象和由它们组合而成的合成对象同等看待. 抽象构建角色:一个抽象角色,给参加组合的对象规定一个接口,这个接口给出共有的接口及默认行为. 树叶构建角色:代表参加组合的树叶对象,没有子对象,定义参加组合的原始对象行为. 树枝构建角色:代表参加组合的有子对象的对象,并给出树枝构件对象的行为. 对于子

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

医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统.如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号.门诊.划价.化验.收费.取药等.看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情. 首先病人必须先挂号,然后门诊.如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验.化验后再回到门诊室. 上图描述的是病人在医院里的体验,图

24天学会设计模式----门面模式(外观模式)

一.门面模式 1.定义 GOF<设计模式>一书对Facade模式是这样描述的: 为子系统中的一组接口提供一个统一接口.Facade模式定义了一个更高层的接口,使子系统更加容易使用. 2.结构 门面角色:客户端可以调用这个角色的方法.此角色知道子系统的功能和责任.在正常情况下,本角色会将所有从客户端发来的请求委派到相应的子系统中去. 子系统角色:可以同时有一个或者多个子系统.每一个子系统都不是一个单独的类,而是一个类的集合.每个子系统都可以被客户端直接调用,或者被门面角色调用. 3.适用性 (1

外观模式(门面模式)

医院的例子 现代的软件系统都是比较复杂的,设计师处理复杂系统的一个常见方法便是将其"分而治之",把一个系统划分为几个较小的子系统.如果把医院作为一个子系统,按照部门职能,这个系统可以划分为挂号.门诊.划价.化验.收费.取药等.看病的病人要与这些部门打交道,就如同一个子系统的客户端与一个子系统的各个类打交道一样,不是一件容易的事情. 首先病人必须先挂号,然后门诊.如果医生要求化验,病人必须首先划价,然后缴费,才可以到化验部门做化验.化验后再回到门诊室. 上图描述的是病人在医院里的体验,图