`
zy19982004
  • 浏览: 661793 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:251950
社区版块
存档分类
最新评论

设计模式学习十:外观模式

阅读更多

一.概念

     外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易被使用。

 

二.UML

 

 

三.实例分析

     大四毕业那会,我们寝室的五个哥们,为了缅怀这即将逝去的大学生活,决定出去旅游,就是所谓的毕业旅行。刚开始考虑的是自己搞定一切,后来发现,还是有点难度,于是就报了旅行社。从这个例子里面,我抽象了这样几个类。

  1. Bus(大巴)。
  2. Disney(迪士尼)。
  3. Hotel(酒店)。
  4. TravelService(旅行社)。
  5. Client(我们)。

     Bus

package com.zzy.facade;

/**
 * 大巴
 * @author eason
 *
 */
public class Bus {
	
	public void takeBus() {
		System.out.println("乘坐汽车");
	}
	
}
 

     Disney

package com.zzy.facade;

/**
 * 迪士尼
 * @author eason
 *
 */
public class Disney {
	
	public void buyTickets() {
		System.out.println("购买门票");
	}

}
 

     Hotel

package com.zzy.facade;

/**
 * 酒店
 * @author eason
 *
 */
public class Hotel {
	
	public void live() {
		System.out.println("住酒店");
	}
}
 

     TravelService

package com.zzy.facade;

/**
 * 旅行社
 * @author eason
 *
 */
public class TravelService {

	private Bus bus;
	private Disney disney;
	private Hotel hotel;
	
	public TravelService() {
		this.bus = new Bus();
		this.disney = new Disney();
		this.hotel = new Hotel();
	}
	
	public void travel() {
		bus.takeBus();
		disney.buyTickets();
		hotel.live();
	}
	
}

 

     TestFacade

package com.zzy.facade;

/**
 * 测试类
 * @author eason
 *
 */
public class TestFacade {

	public static void main(String[] args) {
		travelByYouSelf();
		travelByService();
	}
	
	//自己旅行
	private static void travelByYouSelf() {
		Bus bus = new Bus();
		Disney disney = new Disney();
		Hotel hotel = new Hotel();
		
		bus.takeBus();
		disney.buyTickets();
		hotel.live();
	}
	
	//找个旅行社如下
	private static void travelByService() {
		TravelService ts = new TravelService();
		ts.travel();
	}

}

 

四.使用场景及使用感受

  1. 开发阶段,子系统往往因为不算得重构演化而变的越来越复杂,这给调用它们的用户程序带来了使用上的困难,增加外观可以提供一个简单的接口,减少它们之间的依赖。
  2. 在维护一个大型遗留系统时,可能这个系统已经非常难以维护和扩展了,但因为它包含了非常重要的功能,新的需求开发需要依赖于它。你可以为新系统开发一个外观类。
  3. 设计原则之最少知识原则:只和你的密友谈话。
0
0
分享到:
评论

相关推荐

    设计模式之外观模式案例代码

    **外观模式(Facade Pattern)**是一种结构型设计模式,它为复杂的系统或子系统提供一个简单的接口,使得客户端可以不关心内部的复杂性,只通过这个接口与子系统进行交互。这种模式降低了系统的复杂度,提高了代码的...

    设计模式学习报告

    ### 设计模式学习报告 #### 一、设计模式概述 设计模式是一种被广泛接受和使用的编程解决方案,旨在解决软件设计中的常见问题。它不仅能够帮助开发者编写出更易于理解和维护的代码,还能够促进代码的复用性。设计...

    C#面向对象设计模式纵横谈(11):Facade 外观模式(结构型模式) (Level 300)

    **外观模式(Facade Pattern)**是面向对象设计模式中的一种结构型模式,它提供了一个统一的接口,用于访问子系统中的各个部分。在C#编程中,外观模式可以帮助我们简化复杂的系统接口,使得客户端代码与复杂的内部...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    《设计模式:可复用面向对象软件的基础》一书介绍了23种经典的设计模式,这些模式大致可以分为三大类: 1. **创建型模式**:专注于对象的创建机制,确保系统在合适的时机创建正确的对象。 - **单例模式**...

    《设计模式:可复用面向对象软件的基础》英文版

    本书主要面向已经具备一定面向对象编程基础的读者,旨在通过一系列设计模式的学习,提升读者在实际项目中的设计能力。 #### 核心内容解析 ##### 什么是设计模式? 设计模式是针对软件设计中出现的常见问题而提出...

    设计模式外观模式PPT学习教案.pptx

    设计模式外观模式PPT学习教案 在软件设计中,外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口来访问子系统中的多个接口,从而简化了子系统的使用和维护。本节课程将详细介绍外观模式的...

    java之23种设计模式完整代码

    这些设计模式的代码示例对于Java开发者来说,是非常宝贵的学习材料。通过实践这些代码,你可以深入了解每种模式的实现细节,了解它们如何提高代码的可扩展性和可维护性。同时,对比不同模式的应用,可以帮助你更好地...

    GOF23种设计模式

    GOF(GoF)23种设计模式,是由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大神在他们的著作《设计模式:可复用面向对象软件的基础》中提出的,这些模式分为创建型、结构型和行为型三大类。...

    设计模式学习笔记大全

    以上就是压缩包中的设计模式学习笔记涉及到的主要内容。通过对这些模式的理解和应用,开发者可以更好地解决软件设计中的问题,提升软件的质量和可维护性。每种模式都有其适用场景,理解其背后的意图和应用场景是关键...

    23种设计模式学习笔记

    这个“23种设计模式学习笔记”文档将引导你深入理解这些模式,并帮助你在实际编程中有效地应用它们。以下是对23种设计模式的详细解读: 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于控制...

    Gof设计模式设计模式设计模式PDF

    《Gof设计模式设计模式设计模式PDF》是一个深入学习设计模式的重要资源,包含了全面而详尽的设计模式理论和实践知识。设计模式是软件工程中的一种最佳实践,它为解决常见问题提供了一种可复用的解决方案,使得代码...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    23个设计模式C#代码.学习.NET设计模式

    在.NET开发领域,设计模式是提升代码质量和可维护性的重要工具。这23个设计模式是软件工程中广泛认可的经典...通过学习这个压缩包中的C#代码示例,你可以更好地理解这些设计模式的实际应用,从而提升你的.NET开发技能。

    23种设计模式

    学习和理解这些设计模式对于提升编程技能和编写高质量的代码至关重要。每个模式都有其特定的适用场景和优缺点,理解和熟练运用它们可以使代码更具灵活性、可维护性和可扩展性。通过扩展阅读——设计模式的相关资料,...

    java经典设计模式

    10. **外观模式**:外观模式是一种结构型设计模式,它为子系统提供了一个统一的接口,使得子系统的复杂性对客户端隐藏起来。这简化了客户端代码,使得客户端只需要与一个简单的接口交互。 11. **享元模式**:享元...

    设计模式大作业.zip

    本作业涵盖了多种设计模式,包括结构型、行为型和创建型模式,旨在帮助学习者深入理解和应用这些模式。 1. **外观(Facade)模式**:此模式提供了一个简单的接口,用于与复杂的子系统进行交互。它隐藏了子系统的...

    二十三种设计模式的详细解读 让您迅速了解设计模式

    在本文中,我们将深入探讨二十三种主要的设计模式,帮助您快速掌握这些重要的概念。 1. **单例模式**:确保一个类只有一个实例,并提供全局访问点。它常用于配置管理或数据库连接等场景。 2. **工厂模式**:提供一...

Global site tag (gtag.js) - Google Analytics